Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Budowa zapytania do bazy
bubusek
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 1
Dołączył: 2.10.2007

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


Witam serdecznie problem jak na przedszkole pewnie banalny.

Sprawdzam IP odwiedzającego stronę:
  1. <?php
  2. function IP_prawdziwe(){
  3.  
  4. if ($_SERVER['HTTP_X_FORWARDED_FOR']) {
  5. $ip_prawdziwe = $_SERVER['HTTP_X_FORWARDED_FOR'];
  6. }
  7. else {
  8. $ip_prawdziwe = $_SERVER['REMOTE_ADDR'];
  9. }
  10.  
  11. return $ip_prawdziwe;
  12. }
  13.  
  14. $ip = IP_prawdziwe();
  15. ?>


W bazie danych natomiast mam tabele z przedziałami IP przypisanymi do danego kraju.
przykładowo:
  1. ipfrom ipto country
  2. 121195296 121195327 ITALY
  3. 184549376 201674095 UNITED STATES


Pierwszy problem dla mnie to to iż pobrany wynik $ip przedstawia się w formię np 88.153.245.185 a nie ciągu liczb jak w bazie bez kropek.
Drugi to w jaki sposób stworzyć zapytanie do bazy danych by sprawdzało z jakiego przedziału jest IP odwiedzającego stronę i zwracało wynik z nazwą tego kraju

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
krispak
post
Post #2





Grupa: Zarejestrowani
Postów: 250
Pomógł: 55
Dołączył: 27.08.2008

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


Oczyszczasz IP z kropek poprzez str_replace w funkcji lub poza nia i dajesz zapytanie do bazy
  1. $ip = str_replace('.', '', IP_prawdziwe());
  2. mysql_query("SELECT * FROM tabelaIp WHERE ipfrom <= '".$ip."' AND ipto >= '".$ip."'");


--------------------
* * * * * * * * * * * * * * * * * * * * * * * * *
PHP, Laravel, Docker, Docker Compose, Laradock, Redis, JS, React, Vue, CSS, SCSS, Gulp, GIT ... itd..
Go to the top of the page
+Quote Post
bubusek
post
Post #3





Grupa: Zarejestrowani
Postów: 70
Pomógł: 1
Dołączył: 2.10.2007

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


Hmm to w takim razie jednak te przedziały IP w bazie są jakoś zmodyfikowane bo największy przedział jaki mam to;
3732930560 373397913 CHINA

więc 9 cyfrowe więc przykładowe IP 88.153.245.185 po usunięciu kropek będzie 11 cyfrowe i nie znajdzie swego przedziału...

Ten post edytował bubusek 23.09.2010, 22:28:19
Go to the top of the page
+Quote Post
krispak
post
Post #4





Grupa: Zarejestrowani
Postów: 250
Pomógł: 55
Dołączył: 27.08.2008

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


W takim badz razie adresy sa przekonwertowane funkcja ip2long, czyli bedzie tak:
  1. $ip = sprintf("%u", ip2long(IP_prawdziwe()));
  2. mysql_query("SELECT * FROM tabelaIp WHERE ipfrom <= '".$ip."' AND ipto >= '".$ip."' LIMIT 1");


--------------------
* * * * * * * * * * * * * * * * * * * * * * * * *
PHP, Laravel, Docker, Docker Compose, Laradock, Redis, JS, React, Vue, CSS, SCSS, Gulp, GIT ... itd..
Go to the top of the page
+Quote Post
bubusek
post
Post #5





Grupa: Zarejestrowani
Postów: 70
Pomógł: 1
Dołączył: 2.10.2007

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


Ślicznie dziękuje za pomoc.
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: 19.08.2025 - 21:24