Prosty licznik odwiedzin

Licznik tekstowy odporny na odświeżanie
Teraz pokażę, jak zmodyfikować licznik z poprzedniego rozdziału, aby nie naliczał kolejnych wejść tego samego użytkownika: <?
setcookie(„visited”, „1”, time()+3600*3);
/* wysyła cookie na komputer użytkownika */
?>

<HTML>
<BODY>
<?
if(file_exists(„counter.n”))
{ /* sprawdza, czy plik istnieje */
$file=fopen(„counter.n”, „r”); /* otwiera plik */
flock($file, 1); /* blokuje plik */

$ile=fgets($file, 100); /* odczytuje wartość */

flock($file, 3); /* odblokowuje plik */
fclose($file); /* zamyka plik */

if($visited!=”1″) /* sprawdza, czy
użytkownik już odwiedzał stronę */
{
$ile++; /* zwiększa wartość
o 1 tylko po pierwszym wejściu */
}
}
else
{
$ile=1; /* jeśli plik nie istnieje, wyświetli się 1 */
}

$file=fopen(„counter.n”, „w”); /* otwiera plik do zapisu */
flock($file, 2); /* blokuje do zapisu */

fwrite($file, $ile); /* zapisuje wartość */

flock($file, 3); /* odblokowuje plik */
fclose($file); /* zamyka plik */

echo($ile); /* wyświetla wartość */
?>
</BODY>
</HTML>

     Skrypt wysyła do użytkownika cookie. Następnie zwiększa licznik tylko jeżeli wartość cookie nie jest równa „1”.
Funkcja time() użyta w 3 parametrze funkcji setcookie zwraca aktualny czas, liczony w sekundach od 1 stycznie 1970 roku.

~ - autor: tujbooscriptzz w dniu 5 kwietnia, 2007.

Komentarze 3 to “Prosty licznik odwiedzin”

  1. Witam skrypt wyrzuca mi takie błędy:
    Warning: fopen(counter.n) [function.fopen]: failed to open stream: Permission denied in /home/site/15909/www/skrypt/index.php on line 26

    Warning: flock() expects parameter 1 to be resource, boolean given in /home/site/15909/www/skrypt/index.php on line 27

    Warning: fwrite(): supplied argument is not a valid stream resource in /home/site/15909/www/skrypt/index.php on line 29

    Warning: flock() expects parameter 1 to be resource, boolean given in /home/site/15909/www/skrypt/index.php on line 31

    Warning: fclose(): supplied argument is not a valid stream resource in /home/site/15909/www/skrypt/index.php on line 32

    Poza tym mam pytanie jak zrobić, żeby po 24 godzinacg wejśćie było znów naliczane

  2. witam ponownie, z błedami sobie poradziłem, były złe prawa do katologu w którym umiejscowiłem skrypt, ale pytanie o czas jest aktualne 🙂

  3. w którym miejscu strony trzeba zamieścić ten kod:

    aby rzeczywiście licznik podczas odświeżania strony się nie zwiększał?

Dodaj komentarz