Gå til innhold

Problemer med sortering av tekstfil


Anbefalte innlegg

Hei. Jeg har fått hjelp til å lage et php skript som logger ipadresser og når de

sist besøkte hjemmesiden min. Ip adressene blir skrevet til en tekstfil

(ip.txt) sammen med blant annet tidspunkt, hvilken nettleser brukeren

har og hvilken port de bruker lokalt.

 

Jeg har problem med sorteringen. Alt virker greit utenom når jeg prøve å

klikke på overskriftene i tabellen. Jeg vil at det skal sorteres (synkende)

også etter hver overskrift i tabellen. Dette får jeg ikke til. Noen tips ?

 

Nedenfor er skriptet :

 

 

 

 

<?

 

##################################################

 

if(file_exists("ip.txt")) {

$dbentries=file("ip.txt");

foreach ($dbentries as $line) {

$line=rtrim($line);

$elements=split(";",$line);

$db_ip=$elements[0];

$db_time=$elements[1];

$DB[$db_ip]=$db_time;

$porter[$db_ip]=$elements[2];

$browser[$db_ip]=$elements[3];

$sporter[$db_ip]=$elements[4];

}}

$visitor_ip=$REMOTE_ADDR;

$visitor_time=time();

$DB[$visitor_ip]=$visitor_time;

$porter[$visitor_ip]=$REMOTE_PORT;

$sporter[$visitor_ip]=$SERVER_PORT;

$browser[$visitor_ip]=$HTTP_USER_AGENT;

$fd=fopen("ip.txt","w+");

foreach($DB as $ip => $time) {

fwrite($fd,"$ip;$time;$porter[$ip];$browser[$ip];$sporter[$ip]\n");

} fclose($fd);

 

################################################

 

echo "<h2>Unik IP registrering</h2>";

 

$teller = count($dbentries);

echo "Det er $teller treff i tabellen<br>";

echo "<table cellpadding=4 cellspacing=1 border=1>

<tr>

<td>Nr</td>

<td><a href=vis_log.php?sort=$ip>IP</a></td>

<td><a href=vis_log.php?sort=$time>Tid for besøk</a></td>

<td><a href=vis_log.php?sort=$ip[$porter]>Lokal Port</a></td>

<td><a href=vis_log.php?sort=$ip[$browser]>Nettleser</a></td>

<td><a href=vis_log.php?sort=$ip[$sporter]>Tjener Port</a></td>

</tr>";

 

$ip_er = array_keys($DB);

usort($ip_er,"ip_sort");

 

foreach ($ip_er as $ip) {

$time = $DB[$ip];

$counter++;

print "<tr>

<td>$counter</td>

<td>$ip</td>

<td>".date("d.m.Y H:i:s",$time)."</td>

<td>$porter[$ip]</td>

<td>".substr($browser[$ip],0,68)."</td>

<td>$sporter[$ip]</td>

</tr>";

}

echo "</table>";

 

##################################################

 

function ip_sort($a,$b){

global $DB;

$time_a = $DB[$a];

$time_b = $DB[$b];

 

if($time_a < $time_b)

return 1;

else if($time_a == $time_b)

return 0;

else

return -1;

}

 

##################################################

 

function my_sort($a,$b){

global $sort;

 

$del_a=preg_split("/;/",$a);

$del_b=preg_split("/;/",$b);

 

if($sort == "ip")

return cmp($del_a[0],$del_b[0]);

elseif($sort == "time")

return cmp($del_a[1],$del_b[1]);

elseif($sort == "porter")

return cmp($del_a[2],$del_b[2]);

elseif($sort == "browser")

return cmp($del_a[3],$del_b[3]);

elseif($sort == "sporter")

return cmp($del_a[4],$del_b[4]);

else return 0;

}

 

###############################################

 

?> <body vlink=blue>

Lenke til kommentar
Videoannonse
Annonse

Prøv denne

 

##################################################

 

function my_sort($a,$b){

$sort = $_GET['sort'];

global $sort;

 

$del_a=preg_split("/;/",$a);

$del_b=preg_split("/;/",$b);

 

NB: hvilken versjon av php kjører du?

Har det fungert tidligere?

Hva skjer når du klikker på linkene?

Hvordan ser en linje ut i ip.txt filen?

Endret av ????????
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...