webForumDet fria alternativet

PHP och Perl problem

1 svar · 217 visningar · startad av Blockqoute

BlockqouteMedlem sedan dec. 200380 inlägg
#1

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>
PeeerMedlem sedan mars 20025 907 inlägg
#2

Tråden låses pga korspostning!

Blockqoute skrev:

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å.

Underlättar nog lite om du talar om vad det är som inte fungerar.

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)