Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Miesięczny licznik odwiedziń strony
Forum PHP.pl > Forum > Przedszkole
internetvisible
Witam i proszę o pomoc.
Jak przerobić licznik miesięczny odświeżeń strony, żeby był odprony na odświeżanie?
Oto kod miesięcznego licznika, nieodpornego na odświeżanie:

  1. <?php
  2. //change rights of folder"counter" to 777
  3. $currentmonth = date("Y-m");
  4. // get current month
  5. if(file_exists("counter/$currentmonth.txt")) {
  6. // checking file
  7.  
  8. // counter
  9. $openit=fopen("counter/$currentmonth.txt","r");
  10. $readit=fgets($openit, 1000);
  11. if($cookie=="o") echo("$readit");
  12. else
  13. {
  14. $openitw=fopen("counter/$currentmonth.txt",w);
  15. fwrite($openitw,$readit+1);
  16. // show counter
  17. echo ("Visits: ");
  18. echo ($readit+1);
  19.  
  20. }
  21. // counter end
  22. }
  23. else {
  24. // create current date file
  25. if ($fp = @fopen("counter/$currentmonth.txt","w+")) {
  26. $value="1"; // start value of the counter
  27. fputs($fp, "$value");
  28. fclose($fp);
  29. chmod("counter/$currentmonth.txt", 0666);
  30. echo "$value";
  31. }
  32. else echo "Error. Can't open File.";
  33.  
  34. }
  35. ?>
  36.  
tehaha
dodaj zapis do sesji:
  1. if(!isset($_SESSION['count'])
  2. {
  3. // zapis do pliku
  4. $_SESSIOn['count'] = true;
  5. }

tylko nie zapomnij o session_start()
thek
Cookies, sprawdzanie w sesji danych przeglądarki, adresu ip... pomysłów może być wiele jak rozpoznawać usera smile.gif
internetvisible
Dzięki za odpowiedź.
Jakkolwiek to nie działa.
Pamiętałem zeby dodać na początku mojej strony <? session_start(); ?>

Mój kod wygląda obecnie tak:
  1. <?php
  2. if(!isset($_SESSION["count"])) {
  3.  
  4. $_SESSION["count"] = true;
  5. }
  6.  
  7. $currentmonth = date("Y-m");
  8. // get current month
  9. if(file_exists("counter/$currentmonth.txt")) {
  10. // checking file
  11.  
  12. // counter
  13. $openit=fopen("counter/$currentmonth.txt","r");
  14. $readit=fgets($openit, 1000);
  15. if($cookie=="o") echo("$readit");
  16. else
  17. {
  18. $openitw=fopen("counter/$currentmonth.txt",w);
  19. fwrite($openitw,$readit+1);
  20. // show counter
  21. echo ("Visits: ");
  22. echo ($readit+1);
  23.  
  24. }
  25. // counter end
  26. }
  27. else {
  28. // create current date file
  29. if ($fp = @fopen("counter/$currentmonth.txt","w+")) {
  30. $value="1"; // start value of the counter
  31. fputs($fp, "$value");
  32. fclose($fp);
  33. chmod("counter/$currentmonth.txt", 0666);
  34. echo "$value";
  35. }
  36. else echo "Error. Can't open File.";
  37.  
  38. }
  39. ?>
  40.  

tehaha
widzę, że w trakcie wstawiania kodu zapomniałeś pomyśleć, to działa tak:
przy pierwszej wizycie użytkownika dodajemy do liczby odwiedzin i ustawiamy zmienną sesyjną, jeżeli ta zmienna sesyjna jest ustawiona to liczba odwiedzin pozostanie bez zmian.

ten Twój kod ma być w miejscu gdzie był komentarz //zapis do pliku czyli pomiędzy klamrami wyrażenia warunkowego
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.