Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Zakresy adresów ip
marian84
post 31.05.2010, 07:42:15
Post #1





Grupa: Zarejestrowani
Postów: 185
Pomógł: 10
Dołączył: 29.01.2008

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


Mam bazę danych adresów IP dla Polski.

Jej struktura wygląda następująco:

ip_start | ip_end | misto | powiat | wojewodztwo

1309205504 | 1309206527 | Warszawa | Warszawa | Mazowieckie

Jaksprawdzić czy dany adres ip odwiedzającego stronę zawiera się w któryms z przedziałów?
Go to the top of the page
+Quote Post
wookieb
post 31.05.2010, 07:45:03
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




id_start > ip and id_end < id

questionmark.gif?


--------------------
Go to the top of the page
+Quote Post
marian84
post 31.05.2010, 08:05:09
Post #3





Grupa: Zarejestrowani
Postów: 185
Pomógł: 10
Dołączył: 29.01.2008

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


Cytat(wookieb @ 31.05.2010, 08:45:03 ) *
id_start > ip and id_end < id

questionmark.gif?


Niestety nie dziala w taki sposob.

podając swój adres ip zwraca mi wszystkie elementy bazy

  1. function IP_prawdziwe(){
  2.  
  3. if ($_SERVER['HTTP_X_FORWARDED_FOR']) {
  4. $ip_prawdziwe = $_SERVER['HTTP_X_FORWARDED_FOR'];
  5. }
  6. else {
  7. $ip_prawdziwe = $_SERVER['REMOTE_ADDR'];
  8. }
  9.  
  10. return $ip_prawdziwe;
  11. }
  12.  
  13. $ip = IP_prawdziwe();
  14. echo ip2long($ip).'<br>';
  15. echo long2ip($ip).'<br>';
  16. echo $ip;
  17.  
  18. $sql=mysql_query('SELECT * FROM geo WHERE ipstart>="'.ip2long($ip).'" AND idend<"'.ip2long($ip).'"');
  19. while($row=mysql_fetch_assoc($sql))
  20. {
  21. echo $row['miasto'].', '.$row['woj'].'<br>';
  22. }
Go to the top of the page
+Quote Post
Fifi209
post 31.05.2010, 08:07:18
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


jak sam napisałeś masz pola:
ip_start i ip_end

w zapytaniu masz:
ipstart i idend

Nie dość że brak _ to jeszcze w drugim zamiast "p" masz "d"


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
marian84
post 31.05.2010, 08:11:19
Post #5





Grupa: Zarejestrowani
Postów: 185
Pomógł: 10
Dołączył: 29.01.2008

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


ipstart | idend | miasto | powiat | woj - dokładne nazewnictwo wygląda tak

Ten post edytował marian84 31.05.2010, 08:11:34
Go to the top of the page
+Quote Post
Fifi209
post 31.05.2010, 08:15:50
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Porównuj liczby nie liczbę ze stringiem. (może to przez to?)

Swoją drogą masz co najmniej dziwne nazwy tych tabel.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
marian84
post 31.05.2010, 08:36:27
Post #7





Grupa: Zarejestrowani
Postów: 185
Pomógł: 10
Dołączył: 29.01.2008

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


  1. $sql=mysql_query('SELECT * FROM geo WHERE ipstart>"'.(int)ip2long($ip).'" AND idend<"'.(int)ip2long($ip).'"');
  2. while($row=mysql_fetch_assoc($sql))
  3. {
  4. echo $row['miasto'].', '.$row['woj'].'<br>';
  5. }


nic z tego - nie działa
Go to the top of the page
+Quote Post
phpion
post 31.05.2010, 08:44:38
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Daj odwrotnie znaki większości/mniejszości. Zamiast > daj <=, a zamiast < daj >=.
Go to the top of the page
+Quote Post
Fifi209
post 31.05.2010, 08:53:44
Post #9





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(marian84 @ 31.05.2010, 09:36:27 ) *
nic z tego - nie działa


Nie zrobiłeś jak pisałem

Rzutowałeś na int...

  1. $sql=mysql_query('SELECT * FROM geo WHERE ipstart>"'.(int)ip2long($ip).'" AND idend<"'.(int)ip2long($ip).'"');


A ja mówiłem o zapytaniu:
  1. $sql=mysql_query('SELECT * FROM geo WHERE ipstart > '.ip2long($ip).' AND idend < '.ip2long($ip));


Ten post edytował fifi209 31.05.2010, 08:54:04


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
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 Wersja Lo-Fi Aktualny czas: 7.07.2025 - 23:58