Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stały licznik
Forum PHP.pl > Forum > Przedszkole
Zidu
Czy ktoś z forumowiczów spotkał się już z takim licznikiem jak na tej stronie:
http://www.irak.pl/
Mam mały, prosty skrypt liczący nie odporny na odświeżanie strony, oto on:
Kod
<SPAN lang=EN> <P><div id="licz">1</div><BR><script type="text/javascript">var n=1;<BR>function dolicz(n){<BR>document.getElementById("licz").innerHTML=n;n++;setTimeout("dolicz("+n+")",500);</P> <P>}dolicz(n);</P> <P></script></P></SPAN>

Szukam pomocy w przerobieniu go na php i by był odporny na odświeżanie.
Za jakąkolwiek pomoc, sugestię czy link z góry dziękuję.
gox
Jako ze nie lubie baz danych tongue.gif daje wersje na plikach
Nie recze co sie stanie jak przekroczysz 1Mln unikatowych visitow

  1. <?php
  2.  
  3. $path = 'counter.txt';
  4. $counter = file_get_contents($path);
  5. $counter = preg_replace('#[^0-9]#', '', $counter);
  6.  
  7. $licznik = new licznik;
  8.  
  9. if ( false === $licznik->sprawdz_czy_byl()) { # nie byl
  10.    $licznik->dodaj_ip();
  11.    $counter++;
  12.    file_put_contents($path, $counter);
  13. }
  14.  
  15.    class licznik {
  16.        
  17.        var $path = './licznik.php';
  18.        var $data = '';
  19.        
  20.        function long_ip() {
  21.            return ip2long($_SERVER['REMOTE_ADDR']);
  22.        }
  23.        
  24.        function sprawdz_czy_byl() {
  25.            if ( array_key_exists($this->long_ip(), $this->get_db()))
  26.                return true
  27.            return false;
  28.        }
  29.        
  30.        function dodaj_ip() {
  31.            $data = $this->get_db();
  32.            //$this->data = $data;
  33.            if ( true === $this->sprawdz_czy_byl())
  34.                return false;
  35.            array_push($data, $this->long_ip());
  36.            $this->raw_serialize_put($this->path, $data);
  37.            return true;
  38.        }
  39.        
  40.        function get_db() {
  41.            $data = empty($this->data) ? $this->raw_unserialize_get($this->path) : $this->data;
  42.            $this->data = $data;
  43.            return $data;
  44.        }
  45.        
  46.        function raw_unserialize_get($path) {
  47.            if ( false === $data = @file_get_contents($path))
  48.                $data = serialize(array());
  49.            $data = unserialize($data);
  50.            return $data;
  51.        }
  52.        
  53.        function raw_serialize_put($path, $data) {
  54.            file_put_contens($path, serialize($data));
  55.            return true;
  56.        }
  57.    }
  58. ?>


Nie testowane
ferrero2
Cytat
Jako ze nie lubie baz danych tongue.gif daje wersje na plikach


O maj gat smile.gif jak ktoś piszący coś w php może nie lubić baz danych - przecież to najlepszy przyjaciel człowieka smile.gif po co męczyć się z plikami ?

Apropo tematu przeczytaj mój post (dokładnie wszystko opisałem)
http://forum.php.pl/index.php?showtopic=100833&hl=online

Pozdrawiam
gox
Najlepszy przyjaciel to przestaje byc, kiedy okazuje sie ze kupiles hosting 10gb pow. dyskowej ale tylko 500mb na baze...
Czy meczyc... hmm... to zalezy ile sobie libsow do obslugi plikowej bazy danych wczesniej napisales.
ferrero2
hehe niezły hosting swoją drogą.
Moim zdaniem baza to po sto kroć ułatwienie sobie życia.
Każdy robi to co lubi, najważniejsze żeby działało smile.gif

Pozdrawiam
Zidu
Po pierwsze dziękuję wszystkim za zainteresowanie. Niemniej jak w temacie nie chodzi mi
o licznik odwiedzin, lecz tak jak pisałem o licznik z strony Link
Jest on po lewej i pokazuje "Cost of the war in Iraq".
Ten kod który wstawiłem wcześniej jest w js i jak przeładuję stronę to leci od nowa i tu
mam problem. Dlatego potrzebuję w php by niezależnie od godziny czy dnia wejścia
na stronę licznik pokazywał cały czas nowy stan.
Jeśli ktoś ma jakieś sugestie czy chociaż link do podobnego skryptu to z góry dziękuję.
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.