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.
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
pawel said this on 26 lipca, 2007 @ 10:53 am
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 🙂
pawel said this on 26 lipca, 2007 @ 1:42 pm
w którym miejscu strony trzeba zamieścić ten kod:
aby rzeczywiście licznik podczas odświeżania strony się nie zwiększał?
pawel said this on 26 lipca, 2007 @ 1:55 pm