Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]skrypt odporny na przeładowania
Forum PHP.pl > Forum > Przedszkole
if_error
Witam od dluzszego czasu kozystam z ponizszego skryptu (i mimo wszystko juz sie do niego przyzwyczaiłem) jako licznika odwiedzin: Problem w tym ze skrypt ten nie jest odporny na przeładowania i po odswiezaniu strony zlicza kolejne "odwiedziny". Czy da się to jakoś poprawić ?
  1. <?php
  2. if (!(file_exists("licznik_odwiedzin.txt"))) {
  3. $plik = fopen ("licznik_odwiedzin.txt", "w+");
  4. fputs ($plik, "0");
  5. fclose ($plik);
  6. }
  7. $plik = fopen ("licznik_odwiedzin.txt", "r+");
  8. if (!($plik)) {
  9. print "Nie da się otworzyć pliku z danymi";
  10. } else {
  11. flock ($plik, 2);
  12. $ile = fgets ($plik, 255);
  13. print "<font color=\"#C0C0C0\">Stronę odwiedziło $ile osób.</font>";
  14. $ile++;
  15. fseek ($plik, 0);
  16. fputs($plik, "$ile");
  17. flock($plik, 3);
  18. fclose($plik);
  19. }
  20. ?>
Lee
Ciasteczka, sesje jest dużo możliwości
skowron-line
  1. <?php
  2. if(!isset($_SESSION[nazwa])){
  3.  
  4. if (!(file_exists("licznik_odwiedzin.txt"))) {
  5. $plik = fopen ("licznik_odwiedzin.txt", "w+");
  6. fputs ($plik, "0");
  7. fclose ($plik);
  8. }
  9. $plik = fopen ("licznik_odwiedzin.txt", "r+");
  10. if (!($plik)) {
  11. print "Nie da się otworzyć pliku z danymi";
  12. } else {
  13. flock ($plik, 2);
  14. $ile = fgets ($plik, 255);
  15. print "<font color=\"#C0C0C0\">Stronę odwiedziło $ile osób.</font>";
  16. $ile++;
  17. fseek ($plik, 0);
  18. fputs($plik, "$ile");
  19. flock($plik, 3);
  20. $_SESSION[nazwa] = //np. $_SERVER['REMOTE_ADDR'];
  21. fclose($plik);
  22. }
  23.  
  24. }
  25. ?>

p.s sesja lepsza niz ciacho
envp
Cytat
p.s sesja lepsza niz ciacho


Ja uwazam, ze jest odwrotnie dla tego przypadku...
-if_error-
dzięki wielkie
if_error
sprobowalem na cookiesach i:

  1. <?php
  2. setcookie("licznik", "1", 0);
  3. if (!$_COOKIE["licznik"]) {
  4.  
  5. if (!(file_exists("licznik_odwiedzin.txt"))) {
  6. $plik = fopen ("licznik_odwiedzin.txt", "w+");
  7. fputs ($plik, "0");
  8. fclose ($plik);
  9. }
  10. $plik = fopen ("licznik_odwiedzin.txt", "r+");
  11. if (!($plik)) {
  12. print "Nie da się otworzyć pliku z danymi";
  13. } else {
  14. flock ($plik, 2);
  15. $ile = fgets ($plik, 255);
  16. print "<font color=\"#C0C0C0\">Stronę odwiedziło $ile osób.</font>";
  17. $ile++;
  18. fseek ($plik, 0);
  19. fputs($plik, "$ile");
  20. flock($plik, 3);
  21. fclose($plik);
  22. }
  23.  
  24. }
  25. ?>


i wyskakuje mi błąd:
  1. Warning: Cannot MODIFY header information - headers already sent BY (output started at /home/poloaorg/public_html/INDEX.php:9) IN ../public_html/INDEX.php ON line 454


a linia 454 to jest:
  1. <?php
  2. setcookie("licznik", "1", 0);
  3. ?>
skowron-line
wrzuc sobie tego warninga w google. Ten warning byl walkowany na tym forum po 100kroc
1010
a ciasteczko zapisuj sobie pod dodaniu wartości do licznika a nie przed... Bo ci nigdy nie naliczy nic...
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.