Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [funkcja] licznik odwiedzin
Forum PHP.pl > Inne > Oceny
d.stp
Prosiłbym o ocenę funkcji licznika opartego na bazie mysql. Licznik pokazuje ilość unikalnych odwiedzin w dniu, tygodniu, miesiącu i wszystkich. Chciałbym się dowiedzieć czy dobrze i optymalnie jest to napisane.

  1. function counter($value) {
  2.  
  3. if ($value != 'count') {
  4.  
  5. switch($value) {
  6. case 'all':
  7. default:
  8. $counter = mysql_query("SELECT COUNT(`id`) FROM `counter`");
  9. break;
  10. case 'day':
  11. $day = date('Y-m-d H:i:s', time()-1440*60); // 24 hours
  12. $counter = mysql_query("SELECT COUNT(`id`) FROM `counter` WHERE `date` > '$day'");
  13. break;
  14. case 'week':
  15. $week = date('Y-m-d H:i:s', time()-10080*60); // 7 days
  16. $counter = mysql_query("SELECT COUNT(`id`) FROM `counter` WHERE `date` > '$week'");
  17. break;
  18. case 'mounth':
  19. $mounth = date('Y-m-d H:i:s', time()-43200*60); // 1 mounth
  20. $counter = mysql_query("SELECT COUNT(`id`) FROM `counter` WHERE `date` > '$mounth'");
  21. break;
  22. }
  23. }
  24.  
  25. $ip = $_SERVER['REMOTE_ADDR'];
  26. $date = date('Y-m-d H:i:s', time());
  27. $check_ip_query = mysql_query("SELECT `ip` FROM `counter` WHERE `ip` = '$ip'");
  28.  
  29. setcookie("visited", 1, time()+3600*3);
  30.  
  31. if (isset($_COOKIE['visited']))
  32. $cookie_visited = $_COOKIE['visited'];
  33.  
  34. if (mysql_num_rows($check_ip_query) == 0 && $cookie_visited == 0) {
  35. mysql_query("INSERT INTO `counter` VALUES (null, '$ip', '$date')");
  36. }
  37.  
  38. if ($value != 'count') {
  39. $counter = mysql_fetch_row($counter);
  40. $counter = $counter[0];
  41. return $counter;
  42. }
  43.  
  44. }
markonix
$value - mało mówiąca nazwa zmiennej, zmień to chociaż na $type.
3600*3 zamień po prostu na 10800, a ewentualnie obok daj komentarz skąd ta liczba się bierze.
Linie 40 możesz zamienić po prostu na return $counter[0];
Daty optymalniej jest trzymać w postaci unixowej.
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.