PHP-də İstifadəçi-Agent tərəfindən axtarış robotunun müəyyən edilməsi. Php - IP ünvanlarından ziyarət edilən ölkəni əldə etmək Bizə nə lazımdır
coğrafi yerləşmə ölkə kodları (17)
Ziyarətçinin ölkəsini IP vasitəsilə əldə etmək istəyirəm... Hal-hazırda mən bundan istifadə edirəm (http://api.hostip.info/country.php?ip=......)
Budur mənim kodum:
Yaxşı, bu, yaxşı işləyir, amma məsələ ondadır ki, o, ABŞ və ya Kanada kimi ölkə kodunu qaytarır, ABŞ və ya Kanada kimi bütün ölkə adını deyil.
Beləliklə, hostip.info-ya yaxşı alternativ varmı?
Bilirəm ki, mən sadəcə kod yaza bilərəm ki, nəticədə bu iki hərfi bütün ölkənin adına çevirəcək, amma bütün ölkələri ehtiva edən kodu yazmaq üçün çox tənbələm...
PS: Nədənsə mən hazır CSV faylından və ya bu məlumatı mənim üçün ələ keçirəcək hər hansı koddan, ip2country hazır kodu və CSV kimi bir şeydən istifadə etmək istəmirəm.
Cavablar
Mən ipinfodb.com api-dən istifadə edirəm və tam olaraq axtardığınızı əldə edirəm.
Tamamilə pulsuzdur, sadəcə olaraq api açarınızı əldə etmək üçün onlarla qeydiyyatdan keçməlisiniz. Veb saytınızdan yükləyərək onların php sinifini daxil edə bilərsiniz və ya məlumatı çıxarmaq üçün url formatından istifadə edə bilərsiniz.
Mən bunu edirəm:
Onların php sinfini skriptimdə daxil etdim və aşağıdakı kodu istifadə etdim:
$ipLite = yeni ip2location_lite; $ipLite->setKey("sizin_api_key"); if(!$_COOKIE["REMOTE_ADDR"])( //Mən məlumatı saxlamaq üçün kukidən istifadə edirəm $visitorCity = $ipLite->getCity($_SERVER["REMOTE_ADDR"]); if ($visitorCity["statusCode"] == "OK") ( $data = base64_encode(serialize($visitorCity)); setcookie("visitorCity", $data, time()+3600*24*7); //1 həftəlik kuki təyin edin ) ) $visitorCity = seriyadan çıxarın (base64_decode($_COOKIE["visitorCity"])); echo $visitorCity["ölkəAdı"]." Region".$visitorCity["regionName"];
$json = file_get_contents("http://freegeoip.appspot.com/json/66.102.13.106"); $ifadə = json_decode($json); print_r($ifadə);
Layihədə istifadə etdiyim bu suala qısa cavabım var. Cavabımda inanıram ki, ziyarətçinin IP ünvanına sahibsiniz
$ip = "202.142.178.220"; $ipdat = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=" . $ip)); //ISO2 ölkə kodunu alın əgər(property_exists($ipdat, "geoplugin_countryCode")) ( echo $ipdat->geoplugin_countryCode; ) //ölkənin tam adını əldə edin, if(property_exists($ipdat, "geoplugin_countryName")) ( echo $ipdat- >geoplugin_countryName)
Chandranın cavabını sınadım, lakin server konfiqurasiyasım icazə vermir file_get_contents()
PHP Xəbərdarlığı: file_get_contents() URL fayl girişi server konfiqurasiyasında qeyri-aktiv edilib
Chandra kodunu cURL istifadə edərək belə serverlərdə də işləmək üçün dəyişdirdim:
Funksiya ip_visitor_country() ( $client = @$_SERVER["HTTP_CLIENT_IP"]; $forward = @$_SERVER["HTTP_X_FORWARDED_FOR"]; $remote = $_SERVER["REMOTE_ADDR"]; $country = "Naməlum"; if(filter) ($client, FILTER_VALIDATE_IP)) ( $ip = $client; ) elseif(filter_var($forward, FILTER_VALIDATE_IP)) ( $ip = $forward; ) else ( $ip = $remote; ) $ch = curl_init(); $ch, CURLOPT_URL, "http://www.geoplugin.net/json.gp?ip=".$ip); curl_setopt($ch, CURLOPT_RETURNTRANSFER, ip_data_in =); curl_exec($ch); // string curl_close($ch); / if($ip_data && $ip_data["geoplugin_countryName"] != null) ( $country = $ip_data["geoplugin_countryName"]; ) qaytar "IP: ".$ip." # Ölkə: ".$country ) echo ip_visitor_country(); // çıxış Coutry adı ?>
Ümid edirəm kömək edər ;-)
Siz http://www.geoplugin.net/ saytından sadə API istifadə edə bilərsiniz.
$xml = simplexml_load_file("http://www.geoplugin.net/xml.gp?ip=".getRealIpAddr()); echo $xml->geoplugin_countryName ; əks-səda "
"; foreach ($xml olaraq $key => $dəyər) (echo $key , "= " , $value , " \n" ; ) echo "";
İstifadə olunan funksiya
GetRealIpAddr() funksiyası (!empty($_SERVER["HTTP_CLIENT_IP"])) //paylaşılan internetdən ip-i yoxlayın ( $ip=$_SERVER["HTTP_CLIENT_IP"]; ) elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR" ])) //ipin proksidən keçdiyini yoxlamaq üçün ( $ip=$_SERVER["HTTP_X_FORWARDED_FOR"]; ) başqa ( $ip=$_SERVER["REMOTE_ADDR"]; ) $ip qaytarın)
Amerika Birləşmiş Ştatları geoplugin_city= San Antonio geoplugin_region= TX geoplugin_areaCode= 210 geoplugin_dmaCode= 641 geoplugin_countryCode= US geoplugin_countryName= Amerika Birləşmiş Ştatları geoplugin_continentCode= NA geoplugin_latitude=899 98.39 8696899414 geoplugin_regionCode= TX geoplugin_regionName= Texas geoplugin_currencyCode= USD geoplugin_currencySymbol= $ geoplugin_currencyConverter= 1
Siz edə biləcəyiniz bir çox variantınız var
sayəsində
Bu sadə bir sətir kodunu cəhd edin, ziyarətçilərin ölkəsini və şəhərini IP ünvanınızdan alacaqsınız.
$tags = get_meta_tags("http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress=" . $_SERVER["REMOTE_ADDR"]); echo $tags["ölkə"]; echo $tags["şəhər"];
Bunu etmək üçün bir çox müxtəlif yollar ...
Həll №1:
İstifadə edə biləcəyiniz üçüncü tərəf xidməti http://ipinfodb.com-dur. Onlar host adı, geolokasiya və əlavə məlumat verir.
API açarı üçün burada qeydiyyatdan keçin: http://ipinfodb.com/register.php. Bu, serverinizdən nəticələr əldə etməyə imkan verəcək, onsuz işləməyəcəkdir.
Aşağıdakı PHP kodunu kopyalayın və yapışdırın:
$ipaddress = $_SERVER["REMOTE_ADDR"]; $api_key = "SİZİN_API_KEY_BURADA"; $data = file_get_contents("http://api.ipinfodb.com/v3/ip-city/?key=$api_key&ip=$ipaddress&format=json"); $data = json_decode($data); $ölkə = $data["Ölkə"];
Mənfi tərəfi:
Onların saytından sitat:
Pulsuz API-miz daha aşağı dəqiqliyi təmin edən IP2Location Lite versiyasından istifadə edir.
Həll №2:
Bu funksiya http://www.netip.de/ xidmətindən istifadə edərək ölkə adını qaytaracaq.
$ipaddress = $_SERVER["REMOTE_ADDR"]; funksiya geoCheckIP($ip) ( _get_contents("http://www.netip.de/search?query=".$ip); $patterns=array(); $patterns["ölkə"] = "#Ölkə: ( .*?) #i"; $ipInfo=array(); foreach ($pattern kimi $açar => $pattern) ( $ipInfo[$key] = preg_match($pattern,$response,$value) && !empty( $value) : "tapılmadı" print_r(geoCheckIP($ipaddress));
Nəticə:
Massiv ( => DE - Almaniya) // Tam Ölkə Adı
code.google saytından php-ip-2-country-ni yoxlayın. Onların təmin etdiyi verilənlər bazası gündəlik yenilənir, ona görə də öz SQL serverinizi yerləşdirib-yetirmədiyinizi yoxlamaq üçün xarici serverə qoşulmağa ehtiyac yoxdur. Beləliklə, kodu istifadə edərək, yalnız daxil etməlisiniz:
"localhost", //misal host adı "port" => 3306, //3306 -default mysql port nömrəsi "dbName" => "ip_to_country", //misal db adı "dbUserName" => "ip_to_country", //nümunə istifadəçi adı "dbUserPassword" => "QrDB9Y8CKMdLDH8Q", //misal istifadəçi parolu "tableName" => "ip_to_country", //misal cədvəl adı); $phpIp2Country = yeni phpIp2Country($ip,$dbConfigArray); $country = $phpIp2Country->getInfo(IP_COUNTRY_NAME); echo $country; ?>
Nümunə kod (mənbədən)
require("phpip2country.class.php"); $dbConfigArray = array("host" =>"localhost", //misal host adı "port" => 3306, //3306 -default mysql port nömrəsi "dbName" => "ip_to_country", //misal db adı "dbUserName" => "ip_to_country", //nümunə istifadəçi adı "dbUserPassword" => "QrDB9Y8CKMdLDH8Q", //misal istifadəçi parolu "tableName" => "ip_to_country", //misal cədvəl adı); $phpIp2Country = yeni phpIp2Country("213.180.138.148",$dbConfigArray); print_r($phpIp2Country->getInfo(IP_INFO)); ?>
Nəticə
Massiv ( => 3585376256 => 3585384447 => RIPE => 948758400 => PL => POL => POLANYA => 213.180.138.148 => 3585378964 => 5.55.25. 5.2. 255)
Siz http://ip-api.com saytından veb xidmətindən istifadə edə bilərsiniz
php kodunuzda aşağıdakıları edin:
sorğuda bir çox başqa məlumatlar var:
Array("status" => "uğur", "ölkə" => "ÖLKƏ", "ölkə Kodu" => "ÖLKƏ KODU", "region" => "REGON KODU", "regionName" => "REGON ADI", "city" => "ŞƏHƏR", "zip" => Poçt KODU, "lat" => LATITUDE, "lon" => LONGTUDE, "time zone" => "TIME ZONE", "isp" => "ISP NAME" , "org" => "TƏŞKİLATIN ADI", "as" => "NÖMRƏ / ADI KİMİ", "query" => "SORĞU ÜÇÜN İSTİFADƏ EDİLƏN İP ÜNVAN",)
ip ünvanı məlumatını əldə etmək üçün http://ipinfo.io/ istifadə edə bilərsiniz. Onun istifadəsi asanlığı.
şəhər; əks-səda "
".$details->ölkə; əks-səda "
".$details->org; echo "
".$details->hostname; / ?>
Defolt funksiyaların yerinə yetirilməsi
I) $Array = massiv("test1","test2","test3","test3"); unset($Array); ii) $Array = massiv("test1", "test2", "test3", "test3"); massiv_pop($Array); iii) $Array = massiv("test1", "test2", "test3", "test3"); massiv_splice($Array,1,2); iv) $Array = massiv("test1", "test2", "test3", "test3"); array_shift($Array);
28/02/16 11.1Kİstənilən veb-saytda ən populyar və zəruri funksiyalardan biri xüsusi formadan istifadə etməklə həyata keçirilən axtarışdır. Bu funksionallıq ziyarətçilərə saytda onları maraqlandıran məzmunu tez tapmağa imkan verir.
Bu gün biz sizə verilənlər bazası cədvəllərini sorğulayacaq və saytda mövcud menecerlər haqqında məlumatları göstərəcək xüsusi formadan istifadə edərək saytı necə axtaracağınızı söyləmək istəyirik. Siz cari kadrlar haqqında məlumatları ehtiva edən verilənlər bazası cədvəllərinin necə yaradılacağını öyrənəcəksiniz.
PHP-dən istifadə edərək axtarış formalarını inkişaf etdirin, həmçinin SQL ilə tanış olun ( strukturlaşdırılmış Sorğu Dili) – verilənlər bazalarında olan məlumatların toplanması, qeyd edilməsi və dəyişdirilməsi üçün xüsusi dil. Başlamazdan əvvəl sizə tövsiyə edirik layihə fayllarını yükləyin.
Nəyə ehtiyacınız olacaq
- MySQL verilənlər bazası ilə işləmək üçün alət.
- PHP dəstəyi ilə yerli və ya uzaq server.
- Mətn redaktoru.
Verilənlər bazasının yaradılması
Əgər hostinqinizdə verilənlər bazasını başa düşə bildiyinizə tam əmin deyilsinizsə, müvafiq təlimat və ya yardım üçün hosterlə əlaqə saxlayın. Verilənlər bazası yaradıldıqdan sonra onu birləşdirməli, cədvəl yaratmalı və ona lazımi məlumatları yazmalısınız.
MySQL-i idarə etmək üçün ən məşhur alət PHP My Admin-dir. Bu alət bugünkü dərsimiz üçün kifayətdir.
Cədvəlin yaradılması
Cədvəlimiz aşağıdakı formatda yaradılmalıdır:
Sütun adı | Məlumat növü | Uzunluq | Null və ya Null Deyil | Əsas açar? | Avtomatik artım |
ID | INT | 1 | Null deyil | Bəli | Bəli |
Ad | Varçar | 50 | Null deyil | Yox | Yox |
Soyad | Varçar | 50 | Null deyil | Yox | Yox |
E-poçt | Varçar | 50 | Null deyil | Yox | Yox |
Telefon nömrəsi | Varçar | 15 | Null deyil | Yox | Yox |
Verilənlər bazası cədvəli Excel kimi sütun və sətirlərdən ibarətdir. Birinci sütun məlumatları adla müəyyən etməyə imkan verir. Sonra sütunda olan məlumatların növünü izah edən Məlumat növləri sütunu gəlir. Uzunluq sahəsi cədvəl sütunu üçün maksimum yaddaş (saxlama) həcmini təyin edir. Biz daha çox çeviklik verən dəyişənlərdən istifadə edirik. Başqa sözlə, tam adın uzunluğu 50 simvoldan azdırsa, ayrılmış yerin yalnız bir hissəsi tutulacaq.
Və kadr məlumatları arasında boş dəyərlər ola bilməz ( null, boş). Birinci sıra sarı rənglə vurğulanır, çünki ID sütunu bizim əsas açarımızdır. Verilənlər bazasındakı əsas açar hər bir qeydin unikal olmasını təmin edir. Avtomatik artım da bu sütuna tətbiq edilir, yəni verilənlər bazamızdakı hər bir qeydə avtomatik olaraq unikal nömrə veriləcəkdir.
İşçilərin nümayəndələrinin cədvələ əlavə edilməsi
Cədvəli başa düşdükdən sonra onu məlumatlarla doldurmağa başlayın. Proseduru fikrinizdə düzəltmək üçün 6 qeyd kifayətdir. Aşağıda sizə öz nümunəmi təqdim edirəm:
Sütun ID | Ad | Soyad | E-poçt | Telefon nömrəsi |
2 | Rayan | Butler | [email protected] | 417-854-8547 |
3 | Brent | Callahan | [email protected] | 417-854-6587 |
Formanın inkişafı
Google vasitəsilə sayt axtarış forması yaratmaq üçün istənilən uyğun mətn redaktorunu açın. Pulsuz PSPad istifadə etməyi məsləhət görürəm. Sintaksis işıqlandırmasını təmin edən hər hansı mətn redaktorundan istifadə edə bilərsiniz. Bu, PHP kodunun yazılması və sazlanması prosesini xeyli asanlaşdıracaq. Axtarış formanız üçün səhifə yaradarkən onu .php formatında yadda saxlamağınızdan əmin olun, əks halda PHP kodu düzgün təhlil olunmayacaq. Sənədi saxladıqdan sonra ona aşağıdakı işarələməni köçürün:
Ətraflı əlaqə axtarışı
Ad və ya soyadla axtarış edə bilərsiniz
Əgər HTML dili ilə tanışsınızsa, onda burada hər şey ən azı açılış forması teqinə qədər sizə aydın olmalıdır. Bu etiketin içərisində bütün kodun ən vacib elementi - fəaliyyət atributu var. Forma hərəkətimiz üçün faylımızın adını təyin etdik və sonra sorğu sətirini tətbiq etdik " get”.
Kriteriyaya uyğunluğunun yoxlanılması
İstifadəçi ad və ya soyad daxil etdikdə və sonra təqdim düyməsini kliklədikdə, forma məlumatları özünə ötürür və sorğu sətirini əlavə edir " get" Bu nöqtədə biz go sorğu sətirinin mövcudluğunu yoxlayırıq. Nəticə müsbət olarsa, biz axtarış nəticələrini göstəririk.
Tələb olunan nəticələri göstərməzdən əvvəl biz iki dəfə yoxlamaq lazımdır: (1) forma təqdim olunubmu, (2) sorğu sətirində qiymət varmı, (3) axtarış termini kiçik və ya böyük hərflə daxil edilibmi? Əgər yoxlamaların heç biri müsbət nəticə vermirsə ( doğru), onda bizdən heç bir hərəkət tələb olunmur.
Əvvəlcə bağlanma teqindən sonra kiçik bir PHP sayt axtarış kodu blokunu əlavə edək: