Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Licznik
Forum PHP.pl > Forum > Przedszkole
Glarden
Mam licznik osób, które były na stronie, ale nie chcę, żeby dodawał do licznika osobę, która już na stronie była wcześniej. Rozpoznaje po IP. Skrypt wygląda tak:
  1. <?php
  2. function dodaj () {
  3. $file = file("licznik.txt");
  4. $ip = $_SERVER['REMOTE_ADDR'];
  5. if (!in_array($ip, $file)) {
  6. $plik = fopen("licznik.txt", "w");
  7. fputs($plik, $ip."rn");
  8. for ($i=0;$i<count($file);$i++) {
  9. fputs ($plik, $file[$i]);
  10. }
  11. fclose($plik);
  12. }
  13. }
  14. function odczytaj () {
  15. $file = file("licznik.txt");
  16. $ile = count($file);
  17. return $ile;
  18. }
  19. ?>


I co nie zrobię, to jednak dodaje do tego pliku i przy każdym wejściu inkrementuje licznik. Co jest źle?
Hacker
polecam manual php

Cytat
Elementy tablicy zawierają znak nowej linii.
Glarden
Dzięki, teraz już działa.
Ale mam jeszcze jedną prośbę. Zrobiłem licznik osób online, ale na razie mogę go wypróbować tylko na localhoscie, więc moglibyście sprawdzić, czy nie ma błędów? Oto skrypt:
  1. <?php
  2. function online_dodaj () {
  3. include ("baza.php");
  4. $c = time();
  5. $ses = session_id();
  6. $query = "select * from online where session_id='$ses'";
  7. $result = mysql_query ($query);
  8. $ile = mysql_num_rows ($result);
  9. if ($ile>0) {
  10. $query = "update online set time='$c' where session_id='$ses'";
  11. $result = mysql_query ($query);
  12. }
  13. else {
  14. $query = "insert into online values ('$ses', '$c')";
  15. $result = mysql_query ($query);
  16. }
  17. $czas = (time()-300);
  18. $query = "delete from online where time<$czas";
  19. $result = mysql_query ($query);
  20. }
  21.  
  22. function online_odczytaj () {
  23. include ("baza.php");
  24. $query = "select * from online";
  25. $result = mysql_query ($query);
  26. $online = mysql_num_rows ($result);
  27. return $online;
  28. }
  29. ?>


Kiedy ja wchodzę, to pokazuje, że jest jedna osoba (czyli poprawnie).
Kicok
Błędów w działaniu być nie powinno, tyle że kod jest nieco nieoptymalnie napisany. Jeśli chce ci się z tym jeszcze bawić, to zainteresuj się TYM przy odczytywaniu ilości osób online
oraz TYM przy aktualizowaniu wpisów w bazie danych (dzięki REPLACE liczbę zapytań z 4 możesz zmniejszyć do dwóch)
Glarden
Poczytam. Wielkie dzięki.
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.