Olen pähkäillyt jo pitkään, miksei kyseinen koodi toimi niin kuin pitäisi, vaikka mielestäni sen pitäisi toimia:
kopioi; pituusrajoitus; rivinumerot
<?php // IP:n nouto function getip() { if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) { $ip = getenv("HTTP_CLIENT_IP"); } else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) { $ip = getenv("HTTP_X_FORWARDED_FOR"); } else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) { $ip = getenv("REMOTE_ADDR"); } else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) { $ip = $_SERVER['REMOTE_ADDR']; } else { $ip = "unknown"; } return($ip); } $lines = file("laskuri/data.dat"); $lines2 = file("laskuri/ipt.dat"); // Lataukset $numero = $lines[0]+1; // Uniikit $unikipt = array(); for ($q = 0; $q < count($lines2); $q++) { list(,,,,,$getip) = explode("|", $lines2[$q]); array_push($unikipt, $getip); } $getip = getip(); if (!in_array("$getip", $unikipt)) { $numero2 = $lines[1]+1; $fp = fopen ("laskuri/ipt.dat", "a+"); fwrite ($fp, time()."|".@$_SERVER['HTTP_REFERER']."|".$_SERVER['HTTP_HOST']."|".$_SERVER['HTTP_USER_AGENT']."|".$_SERVER['SERVER_PROTOCOL']."|".getip()."\n"); fclose ($fp); } else { $numero2 = $lines[1]; } // Kirjoitetaan uudet luvut $fp = fopen ("laskuri/data.dat", "w+"); fwrite ($fp, ltrim("$numero\n$numero2")); fclose ($fp); ?>
Juu, eli koodi kirjoittaa kahta tiedostoa, toiseen uniikkien kävijöiden ip:t, ja toiseen sitten luvut, sivulataukset ja uniikit.
Nyt ongelmana on se, että pätkän ei pitäisi lisätä tiedostoon ip-tietoja, jos kyseinen ip jo tietokannasta löytyy. Mutta lisääpä silti, vaikka löytyy sama ip...
kokeile vaihtaa kohta
muotoon
Juu, tuolla Mazulin vinkillä sain toimimaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.