Sypex Geo - ქალაქის სწრაფი იდენტიფიკაცია IP-ით. მომხმარებლის ადგილმდებარეობის განსაზღვრა ქალაქის განსაზღვრა ip php yandex-ით

აჩვენეთ ვიზიტორის ქალაქი მაღაზიის კონვერტაციის განაკვეთების გასაუმჯობესებლად. მზა კოდის ჩასმა საიტზე ნებისმიერ ადგილას, სადაც მითითებულია ქალაქი, რეგიონი და ქვეყანა. ბევრი სკრიპტი ვცადე, მაგრამ ეს ყველაზე მარტივი და ეფექტური აღმოჩნდა! მე ის გამოვიყენე ვებსაიტის www.mzm-market.ru შექმნისას, სადაც სკრიპტი აჩვენებს "მიწოდება______-ს"

ჩასვით შემდეგი კოდი index.tpl-ში (ან მიწოდების გვერდზე) ნებისმიერ სასურველ ადგილას:



window.onload =function())(
jQuery("#user-city").text(ymaps.geolocation.city);
jQuery("#user-region").text(ymaps.geolocation.region);
jQuery("#user-country").text(ymaps.geolocation.country);)


გამომავალი მზადდება გამოყენებით:

// ქვეყანა, ქალაქი, რეგიონი.
geolocation.country, geolocation.city, geolocation.region

მინდა ცოტა დავამატო ამ პოსტს (რედაქტირებულია 2017 წლის 18 თებერვალს).

ზემოაღნიშნული სკრიპტის გამოყენებისას ბევრ ქალაქში და ბრაუზერში უბრალოდ არაფერი იყო ნაჩვენები და ხანგრძლივი ძიების შემდეგ ვიპოვე ალბათ ყველაზე ეფექტური სკრიპტი ქვეყნის, რეგიონის, ქალაქის განსაზღვრისთვის Yandex API-ით. მე გამოვცადე ის ჩემი კლიენტების მეშვეობით, რომლებიც თითქმის მთელ რუსეთში და მის ფარგლებს გარეთ მდებარეობენ და ეს სკრიპტი შესანიშნავი აღმოჩნდა! აქ არის ჩემი კლიენტის სკრინშოტი:

თქვენ გესმით, რომ ყველაფერი ნათლად არის განსაზღვრული! აბა, ნაწერებით არ გატანჯავ და მაგალითს მოგიყვან!

js ქვეყნის, რეგიონის, ქალაქის განსაზღვრა Yandex API-ით

უბრალოდ ჩასვით ეს კოდი ტეგებს შორის




$(დოკუმენტი).ready(function())(
ymaps.ready(function())(
var geolocation = ymaps.geolocation;
$("#cou").html("თქვენი ქვეყანა: "+geolocation.country);
$("#tow").html("თქვენი ქალაქი: "+geolocation.city);
$("#reg").html("თქვენი რეგიონი: "+geolocation.region);
});
});

და ეს კოდი თქვენს გვერდზე სწორ ადგილას:

თქვენი ქვეყანა: ... გადაწყვეტილი...
შენი ქალაქი: ... გადაწყვეტილი...
თქვენი რეგიონი: ... განსაზღვრულია...

დემონსტრაცია

თქვენი ქვეყანა: ... გადაწყვეტილი...

შენი ქალაქი: ... გადაწყვეტილი...

თქვენი რეგიონი: ... განსაზღვრულია...

სკრიპტი მუშაობს უპრობლემოდ, მაგრამ შესაძლებელია, რომ მათთვის, ვინც პატარა სოფლებშია, ქალაქი, სავარაუდოდ, არასწორად განისაზღვროს და თქვენი ინტერნეტ პროვაიდერის ქალაქი განისაზღვროს.

განახლებულია 02/05/2016

ამ დროისთვის Maps API, რომელიც დაკავშირებულია uCoz პანელთან, აბრუნებს მხოლოდ ვიზიტორის ქვეყანას და კოორდინატებს.

შენიშვნის შესახებ

მყიდველის ადგილმდებარეობის განსაზღვრა ელექტრონული კომერციის ერთ-ერთი ყველაზე მნიშვნელოვანი ამოცანაა.

ამ ჩანაწერში განვიხილავთ, თუ როგორ უნდა განვსაზღვროთ საიტისთვის ვიზიტორის ქვეყანა, რეგიონი და ქალაქი. ყველა ინფორმაცია მოპოვებულია Yandex.Maps API sandbox-დან, ჩვენ უბრალოდ მოვამზადებთ მას uCoz მაღაზიისთვის.

Yandex.Maps სერვისის დაკავშირება

უპირველეს ყოვლისა, თქვენ უნდა დააკავშიროთ რუკის სერვისი საიტის მართვის პანელში. ამისათვის გადადით ონლაინ მაღაზიის პარამეტრებში.

პარამეტრებში გადაახვიეთ გვერდის ბოლოში და აირჩიეთ "რუკის სერვისის გამოყენება:" - Yandex Maps.

ახლა ჩვენ უნდა მივიღოთ API გასაღები ონლაინ მაღაზიისთვის, გვთხოვენ მივყვეთ ბმულს „მიიღეთ გასაღები შერჩეული API-სთვის“. Მოდი გავაკეთოთ ეს.

გვერდზე, რომელიც იხსნება, შეავსეთ მონაცემები და დააწკაპუნეთ "მიიღეთ API გასაღები".

ადგილმდებარეობის განსაზღვრა

უპირველეს ყოვლისა, თქვენ უნდა მოათავსოთ კოდი გვერდის თავში (მაგალითად, გადახდა):

ახლა ჩვენ თავად ვათავსებთ მდებარეობის განსაზღვრის სკრიპტს.

ჩვენ ველოდებით API-ს ჩატვირთვას და DOM მზადყოფნას.

Ymaps.ready(init);

მდებარეობის ჩაწერა:

ფუნქცია init() (   // IP-ით განსაზღვრული მდებარეობის მონაცემები   var geolocation = ymaps.geolocation;   // ჩვენ ვუყურებთ შედეგს კონსოლში   console.log(geolocation.country, geolocation.city, geolocation.region); )

მას შემდეგ რაც გვექნება მდებარეობის მონაცემები, შეგვიძლია გავაკეთოთ ის, რაც გვინდა: შეავსოთ მომხმარებლისთვის შეკვეთის ფორმა, გამოვაჩინოთ მიწოდების სპეციალური პირობები, დავმალოთ გადახდის არასაჭირო მეთოდები, აჩვენოთ მიწოდების ხარჯები პროდუქტის გვერდზე.

ცვლადის აღწერა
გეოლოკაცია.ქვეყანაᲥვეყანა
გეოლოკაცია.რეგიონირეგიონი
გეოლოკაცია.ქალაქიქალაქი
ავტომატური შევსების მიწოდების მისამართი

მოდით გავაფართოვოთ ჩვენი სკრიპტი, რათა მომხმარებლებს გაუადვილოთ შეკვეთის განთავსება, შეიყვანეთ მიღებული მდებარეობის მონაცემები "მიწოდების მისამართი" ფორმის ველში.

ამისათვის ჩვენ უნდა ვიცოდეთ ველის ID მიწოდების მისამართით; ამისათვის გადადით საიტის მართვის პანელზე - ონლაინ მაღაზია - შეკვეთის ველების მართვა. შეხედეთ ბოლო ციფრს "$" სიმბოლოს "თარგის ველის კოდისთვის":

სულ

მოდით გავაერთიანოთ ყველაფერი და მივიღოთ:

Ymaps.ready(init); ფუნქცია init() (  var geolocation = ymaps.geolocation;  if (გეოლოკაცია) (  $("#order-fld-2").html(geolocation.country + ", " + geolocation.region + ", " + geolocation.city );  ) else ( console.log ("მდებარეობის დაყენება ვერ მოხერხდა");  ) )

და არ დაგავიწყდეთ შეცვალოთ ველის ID თქვენით და ჩართოთ იგი გვერდის თავში. Წარმატებები!

მომხმარებლის ადგილმდებარეობის დადგენა ძალზე სასარგებლოა ონლაინ მაღაზიებისა და სადესანტო გვერდებისთვის. მაგრამ მარტივი საიტებისთვის ასევე საინტერესო იქნება, მაგალითად, ქალაქის, ქვეყნის და ა.შ ველების ავტომატური შევსება. სინამდვილეში, სხვადასხვა ტიპის ავტომატური შევსება დააჩქარებს რეგისტრაციას და შეკვეთას.

ინსტალაცია

ჩვენ ვუკავშირდებით Yandex ბიბლიოთეკას:

მდებარეობის მონაცემების გარჩევა:


window.onload = ფუნქცია() (
jQuery("#user-city").text(ymaps.geolocation.city);
jQuery("#user-region").text(ymaps.geolocation.region);
jQuery("#user-country").text(ymaps.geolocation.country);
}

იმ ადგილას, სადაც თქვენ უნდა აჩვენოთ ქალაქი, რეგიონი და ქვეყანა, ჩადეთ:

შეგიძლიათ უბრალოდ დააკოპიროთ სამივე ფრაგმენტი და ჩასვათ ისინი საიტზე ერთ ადგილას. უცნაურია, მაგრამ სკრიპტი დავტესტე დემო საიტზე და არანაირი მონაცემი არ გამომივიდა. Uraaa-ში ჩასმის შემდეგ სკრიპტმა გამოაქვეყნა ყველა მონაცემი ქალაქის, რეგიონისა და ქვეყნისთვის. მე ჯერ ვერ გავიგე მიზეზი, რატომ არ მუშაობდა სცენარი დემო საიტზე.

თუ გსურთ ავტომატურად შეავსოთ ქალაქი სადმე საიტზე (მაგალითად, შეკვეთის ფორმაში), მაშინ გაარკვიეთ ველის ID და შეცვალეთ მისი შინაარსი ამ გზით:

jQuery("#user-city").val(ymaps.geolocation.city);

რომელშიც ჩემი „ველოსიპედი“ იყო ნახსენები, რომელიც ხასიათდება მაღალი სიჩქარით. ერთ-ერთი პოპულარული კითხვა იყო IP-ით ქალაქის განსაზღვრის შესაძლებლობა.

და რამდენიმე თვის შემდეგ, პროექტი, რომელიც დაიწყო როგორც "გართობისთვის", გადაიზარდა დამოუკიდებელ პროექტად.
გაიხსნა Sypex Geo-ს პროექტისადმი მიძღვნილი ცალკე ვებგვერდი, სადაც შეგიძლიათ ჩამოტვირთოთ API-ს და მონაცემთა ბაზების უახლესი ვერსიები, ასევე წაიკითხოთ დოკუმენტაცია.

მათთვის, ვისაც სურს სწრაფად შეამოწმოს ქალაქის IP-ით განსაზღვრის სისწორე, აქ არის დემო გვერდის ბმული. და ჰაკის ქვეშ, მე აღვწერ რამდენიმე ტექნიკურ დეტალს და მივცემ მცირე ტესტირების შედეგებს.

Sypex Geo 2.1 ფორმატი ბოლო სტატიის გამოქვეყნების დღიდან ოპტიმიზირებულია Sypex Geo ფორმატი (შემოკლებით SxGeo) და დაემატა მონაცემთა ბაზაში ორი დირექტორიის – ქალაქებისა და რეგიონების ჩართვის შესაძლებლობა.

ახალი ფორმატის შექმნისას დადგინდა შემდეგი პრიორიტეტები:

  • მაღალი სიჩქარე
  • რესურსების დაბალი მოხმარება
  • ღიაობა (სპეციფიკაციები მონაცემთა ბაზის ორობითი ფაილის ფორმატისთვის და API ღიაა)
  • მრავალმხრივი (მონაცემთა ნებისმიერი ნაკრებით მონაცემთა ბაზის შექმნის შესაძლებლობა)
ფორმატი საშუალებას გაძლევთ შეინახოთ მონაცემები სხვადასხვა კოდირებით. ბეტადან გასვლის შემდეგ, გამოქვეყნდება სკრიპტები მონაცემთა ბაზის MySQL-დან ბინარულ მონაცემთა ფაილად გადაქცევისთვის.

მონაცემთა ბაზაში ინახება შემდეგი ინფორმაცია:

  • ქვეყნის ID
  • ISO 3166-1 ქვეყნის კოდი (ორი სიმბოლო)
  • FIPS 10-4 რეგიონის კოდი (ორი სიმბოლო)
  • რეგიონის სახელი (არასავალდებულო)
  • ქალაქი
  • გრძედი
  • გრძედი
  • დროის სარტყელი (არასავალდებულო)
საჭიროების შემთხვევაში ეს სია შეიძლება შეიცვალოს და/ან გაფართოვდეს. დამატებითი ინფორმაცია SxGeo 2.1 ფორმატის შესახებ შეგიძლიათ იხილოთ ვებგვერდზე. საკუთარი მონაცემთა ბაზა MaxMind-ის პოპულარული GeoLite City გეოლოკაციის სისტემის ძალიან ახლო გაცნობის შემდეგ, გადავწყვიტეთ შეგვექმნა ჩვენი მონაცემთა ბაზა. პრობლემა ის არის, რომ GeoLite City-ს აქვს უამრავი უზუსტობა, ნაგავი, დუბლიკატი ქალაქები, დიაპაზონების გადაჭარბებული ფრაგმენტაცია, ასევე პრობლემები ყოფილი სსრკ-ს ქალაქებთან (მაგალითად, კომპანიების სახელები ან პასუხისმგებელი პირების სახელები აღებულია Whois-დან. ქალაქების ნაცვლად).

ამჟამად მონაცემთა ბაზა დაფუძნებულია GeoLite City-ზე, მაგრამ უკვე შეიცავს რუსეთის, უკრაინის და ბელორუსის სრულიად გადამუშავებულ გაშუქებას. ეტაპობრივად დაზუსტდება სხვა ქვეყნები, პირველ რიგში დსთ და ევროპა. Sypex Geo City მონაცემთა ბაზა შეიცავს ქალაქებისა და რეგიონების სახელებს რუსულ ენაზე UTF-8 (არსებობს სახელები, რომლებიც ჯერ არ არის თარგმნილი), ასევე დროის ზონას.

გარდა ამისა, საიტზე არის SxGeo 2.1 ფორმატში გადაყვანილი სხვა მონაცემთა ბაზები.

გამოყენება Sypex Geo API-ის გამოყენება მაქსიმალურად გამარტივებულია.
1. დააკოპირეთ SxGeo.php და SxGeoCity.dat (ან სხვა მონაცემთა ბაზები) სერვერზე. 3. შექმენით SxGeo ობიექტი //$SxGeo = new SxGeo(); // ნაგულისხმევი რეჟიმი, მონაცემთა ბაზის ფაილი SxGeo.dat $SxGeo = new SxGeo("SxGeoCity.dat", SXGEO_BATCH | SXGEO_MEMORY); // უსწრაფესი რეჟიმი 4. ქალაქის განსაზღვრა (SxGeo City, GeoLite City, IpGeoBase) $SxGeo->get($ip); (აბრუნებს ინფორმაციას ქალაქის შესახებ, რეგიონისა და დროის ზონის დასახელების გარეშე) // $SxGeo->getCityFull($ip); (აბრუნებს სრულ ინფორმაციას ქალაქისა და რეგიონის შესახებ) შესრულების ტესტირება და დესერტად, მცირე შედარებითი შესრულების ტესტირება. ოპონენტები არიან GeoLite API და Geobaza API. ტესტირების ყველა მონაწილე იყენებს საკუთარი ფორმატის ორობით მონაცემთა ბაზას და იყენებს PHP API-ს. ტესტირება ხდება Win 7-ზე (პროპორციები შენარჩუნებულია Linux-ზე), PHP 5.2.17.

შედეგები 10 გაშვების შემდეგ თითოეული API-სთვის ორ რეჟიმში (ნორმალური და მეხსიერების ქეშირებით), საშუალოდ და დამრგვალებით ათამდე. ყოველი გაშვებისთვის იქმნება 50000 შემთხვევითი IP მისამართის მასივი და თითოეული ალგორითმი ეძებს ციკლში.

მისასალმებელია წინადადებები და სურვილები. ჩვენ ასევე ვეძებთ ადამიანებს, რომლებსაც სურთ დაეხმარონ API-ს სხვა ენებზე პორტირებაში და Apache-სა და nginx-ისთვის მოდულების შექმნაში.