Mam problem ze skryptem licznika odwiedzin opartym o sesję. Co jakiś czas zeruje się i nie mogę dojść dlaczego? Czy to problem z jednoczesnym dostępem do pliku przez wielu użytkowników? Może wtedy zamiast do pliku lepiej byłoby zapisywać do tabeli MySQL? Może pewniejszy byłby na ciasteczku, a nie na sesji? (przy okazji: zauważyłem, że w IE zlicza wejście za pierwszym razem, a potem nawet jak zamknę przeglądarkę i otwieram stronę ponownie to nie dodaje odwiedzin. Muszę dopiero celowo zakończyć sesję poleceniem session_destroy. Natomiast w Firefoxie jest prawidłowo).
A oto ten skrypt:
if (empty($_SESSION['sesja'])) { //JEŚLI ZMIENNA SESYJNA JEST PUSTA: $plik = fopen("licznik.txt", "r"); //otwieramy plik do odczytu $stan_licznika = $odczyt[0] + 1; //ustalamy stan licznika
fclose($plik); //zamykamy plik, a następnie... $plik=fopen("licznik.txt","w"); //otwieramy plik do zapisu flock($plik, 2
); //blokujemy plik do zapisu fwrite($plik, "$stan_licznika;", 15
); //zapisujemy do pliku flock($plik, 3
); //odblokowujemy plik fclose($plik); //zamykamy plik $_SESSION['sesja'] = 1; //i deklarujemy zmienną sesyjną.
} else { //W PRZECIWNYM RAZIE:
$plik = fopen("licznik.txt", "r"); //otwieramy plik do odczytu $stan_licznika = $odczyt[0]; //ustalamy stan licznika
fclose($plik); //zamykamy plik. } ?>
No i potem gdzieś w pliku jest: echo $stan_licznika;