Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Licznik PHP- jak zliczać na każdej stronie?
Forum PHP.pl > Forum > Przedszkole
ReBeLs513
Pobrałem skrypt licznika z tej strony: http://www.int24.com.pl/skrypty_php/licznik.php Co mam zrobić, aby licznik wliczał odwiedziny, jak wejdzie się na inną stronę niż index.php? Dodać na każdej stronie
  1. <?php
  2. include("zlicz.php");
  3. ?>
questionmark.gif
koreja
Tym skryptem tego nie zrobisz, dlatego że jest on odporny na przeładowywanie strony, co zresztą jest napisane na stronie skryptu. Czyli nieważne w ilu miejscach go dasz, i tak zliczy tylko raz.
thomson89
Rozumiem, że chcesz zliczyć ilość odwiedzin użyszkodników, niezależnie na której stronie będą?

Dodajesz na każdej stronie (przykład na plikach):
  1. file_put_contents('licz.txt', file_get_contents('licz.txt') + 1);

Oczywiście dodajesz zależność względem ciasteczek. Ustawiasz je np. na 10 min lub na 1h zależy to tylko od ciebie.
ReBeLs513
Właśnie chodzi mi o to, aby zliczał na każdej stronie liczbę wejść jak jedno, czyli jak ktoś wejdzie w index.php a potem w plik.php (lub na odwrót) to zostanie zliczone tylko jedno wejście a po np. 12 godzinach znowu wejście z tego IP zliczy. Bo aktualnie mam licznik, który liczy ilość wejść na każdą podstronę a tego nie chcę.

@thomson- właśnie o to mi chodzi. Ma to wyglądać tak:

  1. <?php
  2. setcookie ("TestCookie", $value);
  3. setcookie ("TestCookie", $value,time()+43200); /* traci ważność za godzinę */
  4. setcookie ("TestCookie", $value,time()+43200, "/~rasmus/", ".utoronto.ca", 1);
  5.  
  6. file_put_contents('../l/licz.txt', file_get_contents('../l/licz.txt') + 1);
  7. ?>
questionmark.gif
thomson89
Nic prostszego, teraz tylko dodajesz if'a przed tą linijkę co ja dałem. W if'ie sprawdź czy ciasteczko NIE istnieje ("!isset($_COOKIE['TestCookie'])") a jeżeli prawda (czyli wchodzi po 1h) to zwiększasz ilość wejść w pliku.
ReBeLs513
nie wiem jak to połączyć haha.gif... po tym: !isset($_COOKIE['TestCookie']) dać tą Twoją linijkę?
thomson89
Trochę podstaw, człowieku...

  1. if(!isset($_COOKIE['byl'])) //sprawdza ciasteczko
  2. {
  3. file_put_contents('../l/licz.txt', file_get_contents('../l/licz.txt') + 1); //dolicza wizytę
  4. setcookie ('byl', 'tak',time()+60*60*24); //traci ważność po 24h
  5. }
ReBeLs513
Wymyśliłem co innego... ale nie działa:o
Na każdej podstronie mam kod include:
  1. <?php include('HTML/subskrypcja.php'); ?>

a pliku subskrypcja.php mam m.in. taki kod licznika:
  1.  
  2.  
  3. //w pliku w ktorym zagniezdzasz musisz ustawic session_start
  4.  
  5.  
  6. //licznik
  7.  
  8. $l_liczb = 3; //ilosc wyswietlanych liczb
  9. $tryb = 1;
  10. // jesli ma byc licznik graficzny wpisz 1
  11. // jesli zwykly to napisz 2
  12. // jesli ma byc niewidoczny wpisz 3
  13.  
  14. $img_dir = "PHP/licznik/img"; //katalog z grafikami
  15. $img_roz = "jpg"; // rozszerzenie pliku np gif, jpg, bmp
  16.  
  17. //zablokowane IP:
  18. //poprostu dodawaj takie linie \/
  19. $lock_ip[] = "212.77.100.101";
  20.  
  21. $l_liczb -= 1;
  22.  
  23. for($r = 0; $r <= 9; $r++) {
  24. if($tryb == 1)
  25. $nim[$r] = "<img SRC=\"$img_dir/$r.$img_roz\">";
  26. elseif($tryb==2)
  27. $nim[$r] = "$r";
  28. }
  29.  
  30. if(file_exists("licznik.num")) {
  31. $fp = fopen("licznik.num", "r");
  32. flock($fp, 1);
  33. $num = fgets($fp, "1000");
  34.  
  35. if(!isset($_SESSION['ip'])) {
  36.  
  37. for($q = 0; $q < count($lock_ip); $q++) {
  38. if($lock_ip[$q] != $_SERVER['REMOTE_ADDR']) {
  39. $bool = true;
  40. }
  41. }
  42.  
  43. if($bool) {
  44. $num++;
  45. $ip = $_SERVER['REMOTE_ADDR'];
  46. $_SESSION['ip'] = $ip;
  47. }
  48. }
  49.  
  50. flock($fp, 3);
  51. fclose($fp);
  52.  
  53. $numi = strval($num);
  54.  
  55. $fpw = fopen("licznik.num", "w");
  56. flock($fpw, 1);
  57. fwrite($fpw, $num);
  58. flock($fpw, 3);
  59. fclose($fpw);
  60.  
  61. $ll_liczb = $l_liczb - strlen($num);
  62. if($tryb != 3) {
  63. for($qw = 0; $qw <= $ll_liczb; $qw++) {
  64. echo($nim[0]);
  65. }
  66.  
  67.  
  68. for($qw = 0; $qw <= strlen($num); $qw++) {
  69. echo($nim[$numi[$qw]]);
  70. }
  71. }
  72. }
  73. else {
  74. $fpw = fopen("licznik.num", "w");
  75. flock($fpw, 1);
  76. fwrite($fpw, 1);
  77. flock($fpw, 3);
  78. fclose($fpw);
  79.  
  80. $ll_liczb = $l_liczb - 1;
  81. if($tryb != 3) {
  82. for($qw = 0; $qw <= $ll_liczb; $qw++) {
  83. echo($nim[0]);
  84. }
  85.  
  86. echo($nim[1]);
  87. }
  88.  
  89. }
  90. echo"<!-- Dolph-Guest-Counter Copyright by Pathfinder(pathfinder@pf.pl) || <a href="http://pathfinder.eia.pl" target="_blank">http://pathfinder.eia.pl</a> -->";
  91. ?>

Dlaczego za każdym kliknięciem lub odświeżeniem strony nalicza mi odwiedziny?questionmark.gif Jak to zablokować, aby ponownie zliczał po 12h? Może jest jakiś błąd w kodzie?
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.