Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Licznik odwiedzin przechowywujący ip w bazie
Strarus
post
Post #1





Grupa: Zarejestrowani
Postów: 339
Pomógł: 12
Dołączył: 22.11.2008

Ostrzeżenie: (20%)
X----


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. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
thomson89
post
Post #2





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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.


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
Strarus
post
Post #3





Grupa: Zarejestrowani
Postów: 339
Pomógł: 12
Dołączył: 22.11.2008

Ostrzeżenie: (20%)
X----


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
Go to the top of the page
+Quote Post
cichy380
post
Post #4





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 18.08.2008
Skąd: Pabianice

Ostrzeżenie: (0%)
-----


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`");


--------------------
Projektowanie i tworzenie stron internetowych
Go to the top of the page
+Quote Post
Strarus
post
Post #5





Grupa: Zarejestrowani
Postów: 339
Pomógł: 12
Dołączył: 22.11.2008

Ostrzeżenie: (20%)
X----


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

Ten post edytował Strarus 9.01.2009, 20:57:16
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 01:42