Prosty licznik odwiedzin przeróbka

Mam tu prosty i prawidłowo działający kod php na licznik odwiedzin na stronie i chciał bym spytać… :x

Czy da się go rozbudować by był odporny na odświeżanie strony by zapisywał każdego gościa tylko raz ??

Oto kod : :wink:

<?PHP


function getHits()

{

  if(($fp = @fopen("counter.txt", "r+")) === false)

    return false;

  $count = fgets($fp);

  $count = $count + 1;

  fseek($fp, 0);

  fputs($fp, $count);

  fclose($fp);

  return $count;

}

echo(getHits());

?>

Zrób sobie jakiś oddzielny plik i zapisuj w nim IP odwiedzających. Następnie przed zapisem kolejnego odwiedzinka (tak wiem, że nie ma czegoś takiego, ale mam nadzieję, że kapujesz o co mi chodzi ;P) sprawdzaj czy istnieje już takie ip w pliku z ip :wink:

  1. Niewydajnie.

  2. Pierwszy user z Neo zniweczy tą metodę (zmienne IP).

Ad. 1.

Chciał, żeby było prosto więc zaproponowałem najprostszy sposób. Można by to zrobić jeszcze na cookies, ale to też ma wady jak i zalety…

Ad. 2.

Niestety taka jest prawda, ale ma to też swoje plusy - podwyża statystykę xD

Mam taki kod i jest odporny na odświeżanie może mi ktoś wskazać błędy bo kiedy go otwieram w przeglądarce nic nie ma pusta karta ? Może murze stworzyć do tego jeszcze jakiś plik ?

<?

setcookie("visited", "1", time()+3600);

?>



<?

if(file_exists("counter.n"))

{

$file=fopen("counter.n", "r");

flock($file, 1);

$ile=fgets($file, 100);

flock($file, 3);

fclose($file);

if($_COOKIE['visited'] != 1)

{

$ile++;

}

}

else

{

$ile=1;

}

$file=fopen("counter.n", "w");

flock($file, 2);

fwrite($file, $ile);

flock($file, 3);

fclose($file);

?>



<?

echo($ile);

?>

Czy umieściłeś plik na serwerze ? (lub lokalnie - Apache+PHP)

No otwieram to w przez wampserwer :slight_smile: