Jag vill skriva en applikation i Perl som kan sammanställa en webbsida innehållande en tabell med ip-adresser och datum visande vilka som besökt en webbplats. Applikationen startas med hjälp av ett formulär på en separat webbsida.
Min sammanställning vill jag skall bestå av en resulterande webbsida där man bara ser vilket ip-nummer som läst webbplatsen samt det datum det skett. Om flera anrop till sidan skett vid näraliggande tidpunkt från samma ip-nummer ska bara det första anropet visas i sammanställningen.
Sammanställningen ska vara sorterad i datumordning med det mest aktuella datumet först i listan. Sammanställningen anropas från en button som skapar ett cgi-anrop och skapar resultatsidan "on the fly".
Jag har en länk till en påhittad access logg, den är: http://w3.miun.se/dtab37/lab/access_log.txt
Jag har fått detta att fungera i stora drag men inte riktigt, undrar om det är någon som kan säga mig vad jag borde ändra på.
Perl-koden ser ut som följande:
print "Content-Type:text/html\n\n";
# Sökvägen till loggfilen
open (FILE,"<../logs/access_log.txt"); # Öppnar filen för att hämta data.
@fildata=<FILE>; # Lägger in datat i en array
close (FILE); # Stänger filen
# Skriver ut html kod
print "<table width='500'>";
print "<tr><td>IP nummer</td><td>Datum</td></tr>";
foreach $rad(reverse (@fildata)) # Loppar ut innehållet med en forsats, tar
# det bakvägen med reverse för att få det senaste överst.
{
@rad=($rad=~m/(.*)index/); # Söker reda på rader med statistik för index.html
if($rad[0]){ # Om innehåll finns
#Tar med allt tom först tecknet
@rad=($rad=~m/(.*) "/);
($temp1, $temp3) = split(/ - - /, $rad[0]); # Splittar strängen i två delar för att presentera
# det i en tabell på ett snygg sätt.
print "<tr><td>".$temp1."</td><td>".$temp3."</td><tr>"; # Skriver ut värdena.
}
}
print "</table>";
HTML och PHP-koden ser ut som följande:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Laboration 3</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p>Klicka på knappen för att se en sammanställning över vilka ip adresser som besökt<br>
[url]http://www.ite.mh.se/~dhtml/index.html[/url]</p>
<form name="form1" method="post" action="">
<input type="submit" name="visa" value="Se sammanställning">
</form>
<?
if (isset($visa)) // Om knappen tryckts inkludera cgi skriptet.
include "laboration3.pl";
?>
<p> </p>
</body>
</html>