Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Licznik odwiedzin przechowywujący ip w bazie
Forum PHP.pl > Forum > PHP
Strarus
cześć:)
Postanowiłem napisać licznik odwiedzin odporny na odświeżenia, który będzie zapisywał ip gości w bazie. Niestety gdy napisałem coś to oczywiście nie działa i chyba nawet wiem czemu. Otóż wszystko jest w pętli. Poniżej jest kod. Prosiłbym o opisanie jak można takowy licznik wykonać i jakie pola muszę mieć w bazie?
  1. <?php
  2. function licznik() {
  3.  include('db_connect.inc.php');
  4.  $sql = @mysql_query("select * from `licznik`");
  5.  if(!$sql) {
  6.    echo 'Bląd podczas wykonywania zapytania '.mysql_error().'.';
  7.  }
  8.  while($row = @mysql_fetch_array($sql)) {
  9.   $ip = $row['ip'];
  10.   if($_SERVER['REMOTE_ADDR'] == $ip) {
  11.    $plik = @fopen("licznik.txt", "r");
  12.    $ile = fgets($plik, 100);
  13.    fclose($plik);
  14.    return ($ile);
  15.   } else {
  16.    $ip = ($_SERVER['REMOTE_ADDR']);
  17.    $sql = @mysql_query("insert into `licznik` set ip=`$ip`");
  18.    if(!@sql) {
  19.      echo 'Błąd podczas zapisu adresu ip do bazy: '.mysql_error().'.';
  20.    }
  21.    $plik = @fopen("licznik.txt", "r+");
  22.    $ile = fgets($plik, 100);
  23.    $ile = $ile + 1;
  24.    fseek($plik, 0);
  25.    fwrite($plik, $ile);
  26.    fclose($plik);
  27.    return ($ile);
  28.   }
  29.  }
  30. }
  31. echo licznik();
  32. ?>
thomson89
Ustaw ciasteczko, z datą wygaśnięcia do pólnocy. Oblicz północ, ile do pólnocy i zapisz to w ciachu. Będziesz miał wtedy UNIKALNE wizyty. Przydatne.

Co do tematu to tak:
Pola -> najlepiej id, ip.

Więcej ci nie pomogę, bo jestem na tym samym etapie.
Strarus
Niestety pierwsza część Twojego posta jest bezużyteczna, ponieważ taki licznik już zrobiłem wcześniej smile.gif id i ip? i jak to potem pobierać i sprawdzać, bo nie rozumiem mechanizmu takiego licznika smile.gif
cichy380
Ciastka bym nie stosował, bo o dziwo mnustwo ludzi ma wyłączoną obługę ciastek w przeglądarkach...

Sugerując się Twoim kodem (pomysłem) uprościłbym go trochę i zoptymalizował:
Kod
mysql_query("insert into IGNORE `licznik` set ip=`".$_SERVER['REMOTE_ADDR']."`");

czyli jeżeli ustawimy na polu IP w bazie danych UNIQUE będzie zapisywał tylko unikalne adresy IP, bo powtarzające się będą ignorowane (IGNORE).

Natomiast odczyt ilości IP do licznika wykonywałbym z bazy danych
Kod
mysql_query("select count(ip) from `licznik`");
Strarus
dzięki bardzo, czyli w bazie muszę jeszcze ustawić UNIQUE, tak?

edit: właśnie się domyśliłem, że przecież taki skrypt zlicza odwołania z jednego IP raz na zawsze!? chyba, że się mylę, ale wolałbym aby ktoś mi wytłumaczył zasadę działania takiego licznika tak aby po np. jednej dobie usuwał wartość z bazy albo cóś haha.gif
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.