Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]problem z licznikem na stronie
Forum PHP.pl > Forum > Przedszkole
japolak
witam:
mam taki oto kod:


wywołanie funkcji counter_site() - zliczanie odwiedzin
  1. public function display(){
  2. $count=new counter_elements();
  3. $count->counter_site();
  4. $this->display_doctype();
  5. echo"<html>\n<head>";
  6. $this->display_title();
  7. $this->display_meta();
  8. $this->display_key_words();
  9.  
  10. $this->display_description();
  11. $this->display_style();
  12. $this->display_scripts();
  13. echo"</head>\n<body><div id=\"xyz\"><div id=\"main\" class=\"container\">";
  14. $this->display_contents();
  15. $this->display_heading();
  16. $this->display_menu();
  17. echo "</div><div class=\"container\">";
  18. $this->display_footer();
  19. echo"</div></div></body>\n</html>";
  20.  
  21. }


natomiast tu jest kod funkcji counter_site:

  1. public function counter_site(){
  2.  
  3. $ip=$_SERVER['REMOTE_ADDR'];
  4.  
  5. $get=new data();
  6. $connect=$get->connect_bd();
  7. //usuwa ip ktore jest juz w bazie duzej niż godzina
  8. $sql1="delete from site_counter where counter_time < DATE_SUB(NOW(),INTERVAL 1 HOUR)";
  9. $connect->query($sql1);
  10. //szuka w bazie czy istnieje ip który odwiedza wasnie nasza strone
  11. $quest="select counter_time from site_counter where ip=INET_ATON('".$ip."')";
  12. $result=$connect->query($quest);
  13. if(!$result){
  14. echo"błąd licznika 5 ";
  15. }
  16.  
  17. //gdy juz istnieje podany ip - aktualizuje date wejscia osoby / tak aby nie zliczalo jej przez nastepna godzinę
  18. if($result->num_rows==1)
  19. {
  20. $sql="update site_counter set counter_time=NOW() where ip=INET_ATON('".$ip."')";
  21. $result=$connect->query($sql);
  22. if(!$result){
  23. echo"błąd licznika 6 ";
  24. };
  25. }
  26. else
  27. {
  28. // jesli nie istnieje ip odwiedzajacego wstawia go do bazy z aktualna godzina
  29. $sql="insert into site_counter (counter_time, ip) values (NOW(),INET_ATON('".$ip."'))";
  30. $result=$connect->query($sql);
  31. if(!$result){
  32. echo"błąd licznika 7 ";
  33. }
  34.  
  35. // zwiekszenie licznika
  36. $sql="update site_info set counter=counter+1";
  37. $result=$connect->query($sql);
  38. if(!$result){
  39. echo"błąd licznika 8 ";
  40. }
  41. }
  42.  
  43. }



problem polega na tym, iż w zależności przez jakie łącze internetowe wchodze na swoją witryne .. raz zlicza mi tylko jednokrotnie moje wejście w ciągu godziny.. a na innym połączeniu za kazdym odświeżeniem strony dodaje mi licznik ( nawet czasami jedno odświeżenie powoduje zwiekszenie licznika o 2)

gdzie mam tu błąd: pomocy:)
.hubert.
Jeśli to jest w internecie to masz dużo odwiedzin na stronie...

japolak
Cytat(.hubert. @ 9.01.2011, 20:26:18 ) *
Jeśli to jest w internecie to masz dużo odwiedzin na stronie...
aleś mi pomógł ..

jakies inne błyskotliwe opinie?


wiec tak..

jako ze nikt mi nie pomógł .. trochę temat olałem ale dzis za niego postanowilem się wiziąść poraz kolejny..

wprowadzilem takie oto zmiany zeby zlokalizować błąd:

  1. public function counter_site(){
  2.  
  3.  
  4. $get=new data();
  5.  
  6. $ip123=$_SERVER['REMOTE_ADDR'];
  7. echo $ip123;
  8. $connect=$get->connect_bd();
  9. //usuwa ip ktore jest juz w bazie duzej niż godzina
  10. $sql1="delete from site_counter";
  11. $connect->query($sql1);
  12. $sql="insert into site_counter (counter_time, ip) values (NOW(),INET_ATON('".$ip123."'))";
  13. $result=$connect->query($sql);
  14. //szuka w bazie czy istnieje ip który odwiedza wlasnie nasza strone
  15. $quest="select ip from site_counter";
  16. $result=$connect->query($quest);
  17. if(!$result){
  18. echo"błąd licznika 5 ";
  19. }
  20. $result1=$result->fetch_assoc();
  21. echo "<br>";
  22. echo $result1['ip'];
  23.  


i przykładowo wynik mam taki
na początku sprawdzam jaki ip zapisuje sie do zmiennej $ip123
$ip123=$_SERVER['REMOTE_ADDR'] daje mi na początku wynik: 178.36.23.122

następnie zapisuje go do bazy poprzez inet_aton który zapisuje sie jako : 2147483647 co po wyciągnięciu daje wynik ip: 127.255.255.255

czemu błędnie przetwarza sie w myslu skoro dobrze jest zapisywany do zmiennej

próbowałem manualnie zapisać go przez zapytanie do bazy:
$sql="insert into site_counter (counter_time, ip) values (NOW(),INET_ATON('123.123.123.112'))"; i wtedy wszystko sie dobrze zapisuje

wyglada na to ze z niewiadomo jakich (dla mnie ) przyczyn przed samym podaniem zmienniej $ip123 do inet_aton ip sie jakos zmienia na calkowicie innyc ciąg

proszę o pomoc
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.