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)

"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:

Kontaktları axtarı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:

Əvvəlcə “” teqi ilə PHP kodu blokunu açırıq.

Bu teq cütünün içərisində olan istənilən PHP kodu server tərəfindən icra ediləcək. Sonra formanın təqdim edilib-edilmədiyini yoxlayırıq:

Axtarış sözünüzü daxil edin

"; } ?>

Biz bool qaytaran daxili isset funksiyasından istifadə edəcəyik və ona $_POST massivini qoyacağıq. Proqramlaşdırmada Boolean ifadəsi bizə doğru və ya yalanı əldə etməyə imkan verir.

Buna görə də, əgər funksiya doğru qaytarırsa, o zaman forma təqdim edilmişdir və biz kodu daha da icra etməyə davam etməliyik. Əgər funksiya false qaytarırsa, o zaman səhv mesajı çap edəcəyik. Bütün yazılan kodu search_submit.php faylında yadda saxlayın.

Axtarış sözünüzü daxil edin

"; } } } ?>

Biz əsas ifadənin içərisinə başqa şərti məntiqi ifadə qoyuruq, ancaq bu dəfə dəyəri ilə birlikdə $_GET massivindən istifadə edirik. get" Dəyişiklikləri search_go.php faylında saxlayın.

İndi ziyarətçilərin sorğu sətirinin yalnız ilk hərfini böyük və ya kiçik hərflə daxil edə bildiyinə əmin olmalıyıq. Ziyarətçinin daxil etdiyi axtarış meyarlarını da nəzərə almaq üçün bir yol təqdim etməliyik. Ziyarətçi girişini təsdiq etməyin ən yaxşı yolu müntəzəm ifadədən istifadə etməkdir:

İkimizin içərisinə başqa bir şərti məntiqi ifadə qoyuruq. Bu dəfə girişi təsdiqləmək üçün müntəzəm ifadədən istifadə edirik. Biz daxili preg_match funksiyasından iki parametrlə istifadə edirik: müntəzəm ifadə və doğrulamanın tətbiq olunacağı forma sahəsi.

Bizim vəziyyətimizdə bu "Ad" sahəsi olacaq ( ad). Ziyarətçinin göstərdiyi axtarış parametrlərini əldə etmək üçün biz $name dəyişəni yaradırıq və onu SQL sorğusunda istifadə olunacaq forma sahəsinin adı ilə POST dəyərinə bağlayırıq. Biz indi həyata keçirmişik: (1) formanın təqdim edilməsi, (2) sorğu sətirinə keçid dəyəri daxildir və (3) ziyarətçi böyük və ya kiçik hərflə ilk hərf daxil edib. Və bütün bu yoxlamalar verilənlər bazasında hər hansı dəyişiklik edilməzdən əvvəl baş verir. Bütün dəyişiklikləri yadda saxlayın.

Verilənlər bazası cədvəlindən nəticələrə qoşulun, seçin, sorğulayın və qaytarın

Cədvəldən məlumat əldə etmək üçün əvvəlcə sayt axtarış skriptindəki serverə qoşulmalısınız. Bunu etmək üçün aşağıdakı kodu istifadə edirik:

", "") və ya ölür (" Mən verilənlər bazasına qoşula bilmirəm, çünki: " . mysql_error()); else( echo "

Zəhmət olmasa axtarış sözünüzü daxil edin

"; } } }?>

Biz $db dəyişəni yaradırıq və onu üç parametr qəbul edən daxili MySQL mysql_connect funksiyasına bağlayırıq: verilənlər bazası olan server ( localhost, yerli işləsəniz), giriş və parol.

Bundan sonra biz verilənlər bazası ilə əlaqə olmadıqda kodun sonrakı icrasını dayandıran daxili PHP funksiyasını işə salırıq. Və biz xətanın səbəbini qaytaracaq daxili MySQL mysql_error funksiyasını işə salmaqla xəta haqqında məlumatı göstəririk. search_connectdb.php faylını yadda saxlayın.

Zəhmət olmasa axtarış sözünüzü daxil edin

"; } } } ?>

mydb adlı dəyişən yaradın və onu daxili ilə bağlayın MySQL funksiyaları mysql_select_db, sonra isə əvvəllər yaratdığınız verilənlər bazasının adını göstərin. Sonra, ziyarətçinin daxil etdiyi axtarış parametrlərini ehtiva edən ad dəyişəni ilə SQL sorğusundan istifadə edərək verilənlər bazası cədvəlini sorğulayırıq:

Zəhmət olmasa axtarış sözünüzü daxil edin

"; } } } ?>

Verilənlər bazası cədvəlini sorğulayarkən biz $sql dəyişəni yaradırıq və onu SQL sorğusunu ehtiva edən sətirlə bağlayırıq. Kontaktlar cədvəlindən id sütunlarından və ad və soyad sütunlarından dəyərləri əldə etmək üçün SELECT ifadəsindən istifadə edirik. Daha sonra axtarışı daraltmaq üçün ad və soyad dəyərləri ilə birlikdə WHERE bəndindən istifadə edirik.

LIKE operatoru ilə birlikdə biz faiz işarəsindən (%) - 0 və ya daha çox simvol qaytaran xüsusi simvoldan, həmçinin axtarış sətirindən ad dəyişənindən istifadə edirik. Nəticədə LIKE ( xüsusi xarakter ilə birlikdə) verilənlər bazası cədvəlində istənilən uyğun adı tapır. Bütün prosesi belə təsvir etmək olar: “ Ziyarətçinin daxil etdiyi şeyə uyğun gələn əlaqə cədvəlindən ad və soyadı seçirik" search_query.php faylını yadda saxlayın.

Zəhmət olmasa axtarış sözünüzü daxil edin

"; } } } ?>

Biz $nəticə dəyişəni yaradırıq və onu $query-ə əlavə etməklə mysql_query() funksiyasının dəyərini təyin edirik. İndi sorğumuz nəticə dəyişənində saxlanılır. Nəticəni PHP-də çıxarmaq üçün biz bir döngə yaradırıq və sonra məlumatları sıralanmamış siyahıya çıxarırıq:

n"; əks-səda "

  • " . "
  • n"; əks-səda ""; ) ) başqa( əks-səda "

    Zəhmət olmasa axtarış sözünüzü daxil edin

    "; } } } ?>

    Əvvəlcə while dövrəsini yaradırıq, onun daxilində row adlı dəyişən yaradırıq və onu SQL sorğumuzu ehtiva edən nəticə dəyişənini alan mysql_fetch_array funksiyasının qaytarma dəyəri ilə inisiallaşdırırıq. while dövrəsinin daxilində biz hər bir sütun dəyərini eyni adlı dəyişənin dəyərinə təyin edirik. Sonra sıralanmamış siyahının içindəki dəyərləri çıxarırıq.

    Burada iki məqama diqqət yetirmək vacibdir: (1) while dövrəsinin daxilində siz sıra massivinin dəyişənlərinə qiymətlər təyin etməyə ehtiyac yoxdur, çünki dəyərlər birbaşa sıra massivindən götürülə bilər; (2) id və əsas açarla birlikdə faylımızın adında istifadə etdiyimiz anker etiketi. Bunun səbəbi bir çox axtarış elementlərinin əvvəlcə heç nə göstərməməsidir.

    Biz yalnız ad və soyadları göstərdiyimiz üçün lövbər teqimizin sonunda ID ilə birlikdə heyət haqqında əlavə məlumatı qaytaracaq əlavə sorğu üçün ID-dən istifadə edə bilərik. Faylı yadda saxlayın və PHP sayt axtarış formasını sınayın ( search_display.php).

    Nişanların silinməsi

    Nəticələr sıralanmamış siyahı kimi göstərilir, lakin əsas odur ki, bizim tablara ehtiyacımız yoxdur. Ondan qurtulmaq üçün başınızdakı faylınızın ən əvvəlinə aşağıdakı CSS qaydasını əlavə edin:

    Hərflə axtarın

    Məktub axtarışını həyata keçirmək üçün sizə yalnız bir neçə əlavə kod xətti lazımdır. Gəlin ziyarətçilər üçün bu rahat funksionallığı əlavə edək. Bu yolla onlar ad və ya soyadda olan hərflər üzrə kadr nümayəndələrini tapa biləcəklər.

    Bağlanan forma etiketindən sonra aşağıdakı kod sətrini əlavə edin:

    A | B | K

    Etiketi bağlayırıq lövbərdən istifadə edərək sorğu sətirinə daxil edin və onu xüsusi hərfə bərabər qoyun. Hərf axtarışı funksiyasını həyata keçirmək üçün mənbə skriptində bağlanan buruq mötərizədən dərhal sonra aşağıdakı kodu aşağıda göstərildiyi kimi əlavə etməliyik:

    )//Axtarış forması skriptini bitirin if(isset($_GET["by"]))( $letter=$_GET["by"]; //Verilənlər bazasına qoşulun $db=mysql_connect ("servername", "username" " , "parol") və ya ölür ("Mən verilənlər bazasına qoşula bilmirəm, çünki: " . mysql_error()); //-Verilənlər bazasını seçin $mydb=mysql_select_db("yourDatabase"); //-Verilənlər bazasına sorğu table $sql="SEÇİCİ İD, Ad, Soyad FROM KONTAKTLAR "%" LİKE . $letter . "%" VEYA Soyadı "%" . $letter . "%"" üçün sorğu işlədin MySQL Sorğu funksiyası $ result=mysql_query($sql); //-Hesablama nəticələri $numrows=mysql_num_rows($reult);

    " .$numrows . " " . $letter " üçün nəticələr tapıldı.

    "; //-Dövrəni başladın və nəticələri çeşidləyin while($row=mysql_fetch_array($result))( $FirstName =$row["FirstName"]; $LastName=$row["LastName"]; $ID=$ row[ "ID"] //-Nəticəni massivdə echo çıxarın ";
      n"; əks-səda "
    • " . "" .$FirstName . " " . $Soyad . "
    • n"; əks-səda "
    "; } }

    Burada sayt axtarış skriptinin dörd kod fraqmentini dəyişdirdik:

    • Biz isset() funksiyasından istifadə edirik və ona $_GET massivini daxil edirik və sonra by dəyərini yoxlayırıq;
    • Biz $letter dəyişəni yaradırıq və onun dəyərini $_GET massivi ilə inisiallaşdırırıq;
    • SQL sorğusuna hərf dəyişənini əlavə edin;
    • Sayılan sətirlərin sayını aldığımız ifadənin daxilində hərf dəyişənini təyin edirik.

    search_byletter.php faylını yadda saxlayın və nəticəni yoxlayın.

    Müəyyən bir işçi axtarın

    Linkimizdəki unikal id-dən keçən işçi məlumatının qalan hissəsini göstərmək üçün aşağıda göstərildiyi kimi hərf skriptində bağlanan mötərizədən dərhal sonra aşağıdakı kodu əlavə etməliyik:

    )//Skripti bitir if(isset($_GET["id"]))( $contactid=$_GET["id"]; //Verilənlər bazasına qoşulun $db=mysql_connect ("server adı", "istifadəçi adı", " password") or die ("Mən verilənlər bazasına qoşula bilmirəm, çünki: " . mysql_error()); data $sql="SELECT * FROM Contacts WHERE ID=" $contactid //- mysql_query() funksiyasına sorğu göndərin $result=mysql_query($sql); $row=mysql_fetch_array ($nəticə))( $FirstName =$sətir["FirstName"]; $LastName=$row["LastName"]; $PhoneNumber=$row["PhoneNumber"]; $Email=$row[" E-poçt"]; //- Nəticəni massiv əks-sədasında çıxarın "

    "; } }

    Burada dörd ədəd kodu dəyişdirdik:

    • Biz isset() funksiyasından istifadə edirik və ondan $_GET massivində ID dəyərini yoxlamaq üçün istifadə edirik;
    • $contactid dəyişəni yaradın və onu $_GET massivi ilə işə salın;
    • Cədvəldə ulduzla * işarələnmiş hər şeyi vurğulayın. Ulduz işarəsi "SQL stenoqramıdır" mənasını verir. masadakı bütün sütunları və sətirləri mənə ver". Hansı məlumatın çıxarılacağını müəyyən etmək üçün SQL ifadəsinin sonunda kontaktid dəyişənini qeyd edirik;
    • Biz hər bir işçi nümayəndəsi haqqında əlavə məlumatları göstəririk.

    search_byid.php faylını yadda saxlayın və nəticəni yoxlayın.

    Nəzərə alın ki, funksionallığımız gözlənildiyi kimi işləyir. Sahəyə ad və ya soyad daxil etdikdə və ya hiperlink kimi hərfi seçdiyiniz zaman yalnız işçilərin adları göstərilir. Əgər keçidin üzərinə sürürsəniz, status panelində unikal ID görə bilərsiniz. Müəyyən bir şəxsin üzərinə klikləsəniz, ünvan çubuğu dəyişəcək və həmin işçi haqqında əlavə məlumat göstəriləcək.

    SQL inyeksiyası

    Axtarış sahəsinə müntəzəm ifadə əlavə etməyimizin səbəbi SQL sorğumuza hər kəsin müdaxilə etməsinin qarşısını almaqdır. Keçmişdə bu problem ümumi idi və hakerlər tətbiqinizi manipulyasiya edərkən öz SQL sorğularını yerinə yetirə bildilər. Məsələn, öz sahəmizdə apostrofdan istifadə etməyə icazə vermişiksə, onda haker sorğudan istifadə edərək verilənlər bazasını sadəcə silə bilər:

    "CƏDVƏL VERİN

    Qeyd edildiyi kimi, müntəzəm ifadə ziyarətçinin ilk simvol kimi yalnız kiçik və ya böyük hərfləri daxil edə bilməsini təmin edir.

    Yekun olaraq

    Bugünkü məqalədə sayt axtarışının necə aparılacağına baxdıq, həmçinin:

    • Verilənlər bazası və əlaqəli cədvəllər yaratmaq;
    • Sütunlar yaratmaq və verilənləri daxil etmək üçün verilənlər bazası idarəetmə vasitələrindən istifadə edin;
    • Daxil edilmiş məlumatları, sorğuda dəyişənlərin mövcudluğunu yoxlaya bilən, həmçinin verilənlər bazasına qoşularaq cədvəldən nəticələri göstərə bilən PHP əsasında axtarış formalarının hazırlanması;
    • Tətbiqinizi və verilənlər bazanızı SQL inyeksiyalarından necə qorumaq olar.

    Bu məqalədən əldə edilən biliklərdən istifadə edərək, başqasının kodunu asanlıqla dəyişdirə və lazım olduqda axtarış formasının funksionallığını genişləndirə bilərsiniz.

    Bu nəşr " məqaləsinin tərcüməsidir. PHP və MySQL ilə axtarış funksiyasını necə yaratmaq olar", mehriban layihə komandası tərəfindən hazırlanmışdır

    Yaxşı Pis

    Bu yazıda 2 skriptə baxacağıq Ziyarətçi sayğacı php-də saytınıza daxil olanların sayını hesablamaq üçün nəzərdə tutulmuşdur, onlardan biri MySQL verilənlər bazası ilə qarşılıqlı əlaqədə olur, ikincisi isə sadəcə olaraq onlayn ziyarətçilər haqqında məlumatları mətn faylına yazır və oradan məlumat alır, yəni verilənlər bazası olmadan.

    Skriptləri quraşdırmaq çox asandır və onların hər birinə ayrıca baxaq.

    MySQL verilənlər bazası ilə php-də ziyarətçi sayğacı

    Birinci skript MySQL Base-nin özü üçün cədvəllər yaradacaq (əgər bunu özünüz etməmisinizsə) və verilənlər bazasında bütün məlumatları saxlayan və səhifələrdə aşağıdakıları göstərən bir əsas sinifdən (fayldan) ibarətdir:

    Çıxış Seçimləri

    • Hazırda nə qədər ziyarətçi onlayndır;
    • Bu gün bu səhifəyə nə qədər ziyarətçi baxıb;
    • Saytınıza gündə nə qədər unikal ziyarətçi gəldi;
    • Ziyarətçilərin ümumi sayı;
    • Hər bir ziyarətçi üçün IP ünvanı;
    • Real vaxt və tarix.

    Yüklədiyiniz arxivdə, yuxarıda yazdığım kimi, yalnız bir smart_counter.class.php faylı olacaq və əsas klassa sahib olacaqsınız və bu faylı əsas kataloqdakı hostinqə yükləməlisiniz.

    $this->db_server = "localhost"; // Host Adınız $this->db_username = "root"; // Verilənlər Bazasından daxil olun $this->db_password = "1234"; // Verilənlər bazasının parolu $this->db_name = "name_bd"; // Verilənlər bazasının adı

    Və ziyarətçi sayğacını quraşdırmaq üçün son addım:
    Səhifənizdə ziyarətçi sayğacını göstərməyi planlaşdırdığınız yerdə bu kodu yazın.

    inc_interval = 86400; $sc->db_server = "localhost"; // Host Adınız $sc->db_username = "root"; // Verilənlər Bazasından daxil olun $sc->db_password = "1234"; // Verilənlər bazasının parolu $sc->db_name = "name_bd"; // Verilənlər bazasının adı $sc->db_main_table = "sc_main"; $sc->db_users_table = "sc_users"; $sc->update_counter(); echo sprintf("Ümumi ziyarətlər: %d
    ", $sc->get_total_visits()); echo sprintf("Bu səhifəyə daxil olanlar: %d
    ", $sc->get_page_visits()); echo sprintf("Bu gün ziyarətlər: %d
    ", $sc->get_today_visits()); echo sprintf("Onlayn istifadəçilər: %d

    ", $sc->get_active_visits(300)); $lv = $sc->get_latest_visitors(); foreach ($lv olaraq $ip=>$info) ( echo $ip . " "; echo $info["host" ] " " echo date("F j, Y ", $info["zaman"]) echo $info["yer";

    "; } ?>

    Onu bu koddakı Bazadan məlumatlarınıza dəyişməyi də unutmayın.

    MySQL olmadan onlayn skript ziyarətçiləri

    PHP skripti - Onlayn ziyarətçilər əvvəlkindən yalnız onunla fərqlənir ki, o, verilənlər bazasından istifadə etmir, mətn faylları ilə işləyir və eyni zamanda praktiki olaraq serverinizdə yük yaratmır. O, eyni zamanda bu fayllardan məlumatları yazan və silən bir PHP sinifindən istifadə edir və saytınıza gələn ziyarətçilər haqqında lazımi məlumatları göstərir.

    Bu skript saytın ziyarətçiləri haqqında aşağıdakı məlumatları göstərir:

    Ziyarətçi məlumatları

    • Ümumilikdə neçə Host var;
    • Bu gün üçün neçə Host;
    • Cəmi neçə hit?
    • Bu gün üçün nə qədər hit;
    • Orada cəmi neçə ziyarətçi var idi;
    • Hazırda nə qədər ziyarətçi onlayndır.
    təcrübəli insan 10 noyabr 2013-cü il, saat 13:29

    Üçüncü tərəf xidmətləri olmadan veb-sayt ziyarətlərinin statistikası

    • Veb saytın inkişafı

    Yaxşı gün! Düşünürəm ki, hər kəs hələ də xatırlayır, bu yaxınlarda Google serverlərindəki kiçik uğursuzluqlardan sonra bir çox saytlar da qəzaya uğrayıb.
    Əslində, bu vəziyyət İnternetdəki hər hansı bir xidmətdə baş verə bilər, ona görə də onu bir daha təhlükəsiz oynamaq daha yaxşıdır.
    Bir çox təşkilatlar üçün veb-sayt trafiki statistikası marketoloqların işinə təsir edir, hansı şəhərlərdə məhsullara daha çox tələbat olduğunu müəyyən edir və s. Bəs saytda istifadə edilən statistika xidməti müvəqqəti olaraq sıradan çıxsa nə etməli?

    Bir həll var: üçüncü tərəf xidmətləri ilə birlikdə sayt ziyarətlərini qeyd etmək üçün öz skriptinizdən istifadə edin.

    Skriptimiz üç fayldan ibarət olacaq:

    • stat.php - nəzarət edilməli olan hər bir səhifəyə daxil edilir
    • stat.log - baxış tarixçəsinin yazılacağı fayl
    • seestats.php - statistikaya baxmaq üçün fayl
    Əslində hər hansı bir fayl adı istifadə edilə bilər.

    Fayl stat.php
    $col_zap) array_shift($sətirlər); $lines = $date."|".$bot."|".$ip."|".$home."|\r\n"; file_put_contents($fayl, $sətirlər); ?>

    Hər dəfə stat.log faylını əl ilə qazmamaq üçün sayta səfərlərin statistikasını göstərmək üçün fayl yaradaq:
    Seestats.php faylı

    sizeof($file)) ( $col=sizeof($file); ) echo "Son ".$col." sayt ziyarətləri:"; ?> sizeof($fayl)-$col; $si--) ( $string=explode("|",$file[$si]); $q1[$si]=$string; // tarix və vaxt $q2[$si]=$string; // bot adı $q3[$si]=$string // bot ip $q4[$si]=$string // ziyarət ünvanı echo "; "; əks-səda" "; əks-səda" "; əks-səda" "; ) əks-səda "
    Vaxt və tarix Ziyarətçi məlumatları IP/proksi Ziyarət edilən URL
    ".$q1[$si]."".$q2[$si]."".$q3[$si]."".$q4[$si]."
    "; əks-səda"
    Ən son baxın 100 500"; əks-səda" 1000 ziyarətlər."; echo "
    Baxın bütün ziyarətlər.
    "; əks-səda ""; ?>

    Hamısı budur! İndi hətta liveinternet və ya Yandex.Metrica qəzaya uğrasa belə, siz həmişə saytınıza kimin daxil olduğunu öyrənə bilərsiniz!

    Teqlər: php, statistika, skript


    Tez-tez veb saytlarda bu sayta hazırda bir çox insan baxır və ya hətta hazırda saytda qeydiyyatdan keçmiş ziyarətçilərin siyahısını görə bilərsiniz. Adətən bu xidmət "Online Ziyarətçi Siyahısı" adlanır. Ziyarətçinin IP ünvanının dinamik olaraq dəyişə biləcəyini və ya əksinə, bir neçə ziyarətçinin eyni IP ünvanından İnternetə daxil ola biləcəyini nəzərə alaraq, saytda unikal ziyarətçilərin sayılması üçün sessiyalardan istifadə olunur. Gəlin cədvəl yaradaq sessiya burada biz ziyarətçilərə təyin edilmiş unikal sessiya identifikatorlarını (SID) saxlayacağıq.

    Cədvəl sessiya

    CREATE TABLE sessiyası (id_session tinytext NOT NULL, putdate datetime NOT NULL default "0000-00-00 00:00:00", istifadəçi tinytext NOT NULL) TYPE=MyISAM;

    Cədvəldə üç sahə var - id_session, sessiya SID-nin yerləşdirildiyi sahə, ziyarətçinin sayt səhifələrinə daxil olduğu vaxtı saxlamaq üçün tarix sahəsi və istifadə etməyəcəyimiz, lakin istifadəçini saxlaya biləcəyiniz istifadəçi sahəsi. sistem icazəniz varsa və qonaqlar və səlahiyyətli istifadəçilər arasında fərq qoymaq istəyirsinizsə ad. Ehtimal olunur ki, istifadəçi adı superqlobal massiv elementində yerləşdirilib $_SESSION["user"] - əgər siz PHP-də avtorizasiya ilə maraqlanırsınızsa, onu burada tapa bilərsiniz.

    Ziyarətçilərin qeydiyyatında iştirak edəcək saytın hər səhifəsinin əvvəlində dizayndan istifadə edərək aşağıdakı kod yerləşdirilməlidir.

    Cədvəldə ziyarətçilərin qeydiyyatı üçün skript sessiya

    // Sessiyaya başlayın session_start(); // Unikal sessiya identifikatoru alın$id_session = session_id(); "config.php" daxil edin; // Bu id-nin verilənlər bazasında olub olmadığını yoxlayın$query = "SEÇ * İD_sessiya HERƏDƏN sessiya = "$id_session "" ; $ses = mysql_query($query); if(! $ses ) exit( "" ); // Eyni nömrəli sessiya artıq mövcuddursa, // bu istifadəçinin onlayn olduğunu bildirir - onun // son səfərinin vaxtını yeniləyin if(mysql_num_rows($ses)>0) ($query = "YENİLƏNİB sessiya SET putdate = NOW(), user = "$_SESSION [ istifadəçi ] " WHERE id_session = " $id_session "" ; mysql_query($query); ) // Əks halda, belə bir nömrə yoxdursa - ziyarətçi yenicə // daxil olub - cədvələ yeni bir ziyarətçi yerləşdiririk başqa( $query = "sessiya dəyərlərinə daxil edin("$id_session ", NOW(), " $_SESSION [ istifadəçi ] ")" ; if(! mysql_query ($query )) ( echo $query ."
    "; əks-səda "

    İstifadəçi əlavə edərkən xəta baş verdi

    "
    ; çıxış(); ) ) // 20 dəqiqə ərzində // olmayan istifadəçilərin resursu tərk etdiyini güman edəcəyik - biz onları // id_session verilənlər bazasından silirik.$query = "HƏRƏKİ sessiyadan SİLİN< NOW() - INTERVAL "20" MINUTE" ; mysql_query($query); ?>

    HTTP protokolu sessiya protokolu deyil, ona görə də biz yalnız ziyarətçilərin saytın səhifələrinə girişini qeyd edə bilərik - bundan sonra ziyarətçi nə qədər müddət sonra səhifəni oxuyacaq - yalnız Allah bilir - biz bu məlumatı əldə edə bilməyəcəyik. Buna görə də güman edəcəyik ki, bir ziyarətçi 20 dəqiqədən çox müddət ərzində sayt səhifələrinə daxil olmazsa, o, ayrılıb və cədvəldən çıxarıla bilər. sessiya.

    İndi bizə sadəcə cədvəlin məzmununu göstərmək qalır sessiya və ya ona gələnlərin sayını hesablayın.

    Cədvəlin məzmunu göstərilir sessiya

    // Verilənlər bazası ilə əlaqə qurun"config.php" daxil edin; // Qeydləri // olan bütün ziyarətçilərin adlarını sessiya cədvəlində göstərin$query = "Seansdan * SEÇİN" ; $ath = mysql_query($query); if(! $ath ) exit( "

    Sessiya cədvəli sorğusunda xəta

    "
    ); // Ən azı kimsə varsa, cədvəli göstərin if(mysql_num_rows ($ath )> 0 ) ( echo " " ; while($author = mysql_fetch_array ($ath )) ( // Ziyarətçi qeydiyyatdan keçməyibsə // onun adının yerinə "anonim" göstərin if(empty($author [ "user" ])) echo "" ; başqa əks-səda " " ; ) əks-səda "
    anonim
    " . $author [ "istifadəçi" ]."
    " ; } ?>

    Verilənlər bazası ilə əlaqə yaratmaq üçün bizə konfiqurasiya faylı lazımdır config.php, aşağıdakı məzmun.

    Konfiqurasiya faylı config.php

    /////////////////////////////////////////////// //////// // 2003-2011 (C) SoftTime IT studio (http://www.site) ///////////////// /// /////////////////////////////////// // yerli maşın serveri qurulub$dblocation = "localhost" ; // Verilənlər bazasının adı, hostinqdə və ya yerli maşında$dbname = "dbase" ; // Verilənlər bazasının istifadəçi adı$dbuser = "kök" ; // və onun parolu $dbpasswd = "" ; // Verilənlər bazası ilə əlaqə qurun$dbcnx = @mysql_connect ($dblocation, $dbuser, $dbpasswd); if (! $dbcnx ) ( exit( "

    Verilənlər bazası serveri hazırda əlçatan deyil, ona görə də səhifə düzgün göstərilə bilməz.

    "
    ); } // Verilənlər bazası seçin if (! @ mysql_select_db ($dbname , $dbcnx )) ( exit( "

    Verilənlər bazası hazırda əlçatan deyil, ona görə də səhifə düzgün göstərilə bilməz.

    "
    ); } // Bağlantı kodlamasını təyin edin@mysql_query("ADLARI SET "cp1251""); ?>