ქართველი ხარ ბიჭოო? :) ანუ User Country Detector
ძალიან მაგარი ფილმია, როგორც უმეტესი ქართული ფილმები, მაგრამ ამ პოსტს არანაირი კავშირი არ ააქვს ამ ფილმთან გარდა პოსტის სათაურისა
მოკლედ განვიხილოთ რა გვინდა. ხშირად არის შემთხვევა როცა გვსურს ჩვენს საიტზე ქართველი ვიზიტორის დადგენა, ამის თითქმის ერთადერთი საშუალება არის ვიზიტორის ip-ის დადგენა, გარჩევა და შესაბამისი რეაგირება. არსებობს უცხოური რესურსები, რომლებიც გვაძლევენ მსოფლიო ip-ების სიას, დაჯგუფებულს ქვეყნების მიხედვით და შემდგომ შეგვიძლია მისი გარჩევა.
მე მინდა შემოგთავაზოთ შედარებით ლაკონური და უფრო სწრაფი მეთოდი ქართული Ip-ების აღმოსაჩენად. ამისთვის ვიღებთ ქართული Ip-ების ბაზას (29.05.2010-ის მდგომარეობით) , ვიგებთ ვიზიტორის Ip-ს, ვურევთ ერთმანეთში და ვიზიტორის Ip თუ არსად არ დაიკარგა ე.ი. ვიზიტორი ქართული Ip-დან არის.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | '62.168.160.0/19','62.212.32.0/19','77.74.40.0/21', '77.92.224.0/19','78.139.128.0/18','80.77.48.0/20', '80.83.128.0/20','80.92.176.0/20','80.241.176.0/20', '80.241.240.0/20','81.16.240.0/20','81.95.160.0/20', '82.112.160.0/19','85.114.224.0/19','85.117.32.0/19', '85.118.96.0/19','85.238.32.0/19','87.253.32.0/19', '88.210.192.0/18','89.150.0.0/20','89.232.0.0/18', '91.151.128.0/20','91.184.96.0/19','91.208.144.0/24', '91.209.131.0/24','91.212.213.0/24','92.51.64.0/18', '92.54.192.0/18','92.241.64.0/19','93.174.24.0/21', '93.177.128.0/18','93.186.208.0/20','93.188.8.0/21', '94.43.0.0/16','94.100.224.0/20','94.137.160.0/19', '94.235.0.0/16','94.240.192.0/18','95.104.0.0/17', '95.137.128.0/17','109.172.128.0/17','109.205.40.0/21', '109.234.112.0/21','109.238.224.0/20','178.134.0.0/16', '178.249.16.0/21','188.92.208.0/21','188.93.88.0/21', '188.121.192.0/19','188.129.128.0/17','188.169.0.0/16', '193.104.20.0/24','212.58.96.0/19','212.72.128.0/19', '213.131.32.0/19','213.157.192.0/19','213.200.0.0/19', '217.11.160.0/20','217.147.224.0/20','178.236.48.0/20'. |
მოცემულ მაგალითში ip-ების ინტერვალის განმარტება გამოიყურება ესე -
81.95.160.0/20 = 81.95.160.0-81.95.175.255
ანუ მოცემული ინტერვალის საწყისი Ip არის 81.95.160.0 და
საბოლოოს ამ Ip + 2(32-20)
შემდეგ გამოვიყენებთ php-ის ჯადოსნურ ფუნქციას ip2long და მივიღებთ შეზავებულ ფუნქციას -
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | function isGeorgianIp($userIp){ $_IPS = array( '62.168.160.0/19','62.212.32.0/19', '77.74.40.0/21','77.92.224.0/19', '78.139.128.0/18', '80.77.48.0/20','80.83.128.0/20','80.92.176.0/20','80.241.176.0/20','80.241.240.0/20', '81.16.240.0/20','81.95.160.0/20', '82.112.160.0/19', '85.114.224.0/19','85.117.32.0/19','85.118.96.0/19','85.238.32.0/19', '87.253.32.0/19', '88.210.192.0/18', '89.150.0.0/20','89.232.0.0/18', '91.151.128.0/20','91.184.96.0/19','91.208.144.0/24','91.209.131.0/24','91.212.213.0/24', '92.51.64.0/18','92.54.192.0/18','92.241.64.0/19', '93.174.24.0/21','93.177.128.0/18','93.186.208.0/20','93.188.8.0/21', '94.43.0.0/16','94.100.224.0/20','94.137.160.0/19','94.235.0.0/16','94.240.192.0/18', '95.104.0.0/17','95.137.128.0/17', '109.172.128.0/17','109.205.40.0/21','109.234.112.0/21','109.238.224.0/20', '178.134.0.0/16','178.249.16.0/21', '188.92.208.0/21','188.93.88.0/21','188.121.192.0/19','188.129.128.0/17','188.169.0.0/16', '193.104.20.0/24', '212.58.96.0/19','212.72.128.0/19', '213.131.32.0/19','213.157.192.0/19','213.200.0.0/19', '217.11.160.0/20','217.147.224.0/20','178.236.48.0/20'); //ipbase 04.06.2010 $ip2long = array(); $userIp = ip2long($userIp); foreach($_IPS as $ip){ list($sIp,$int) = split('/',$ip); $fLongIp = ip2long($sIp); $eLongIp = $fLongIp+pow(2,(32-$int)); if($userIp>=$fLongIp && $userIp< =$eLongIp) return true; } return false; } |
უკვე ფუნქციიდან მიღებული პასუხით შეგვიძლია შევასრულოთ ის რაც გვსურს (გვერდის გადამისამართება, ენის ავტომატური მინიჭება და.ა.შ. )
1 2 3 4 5 6 7 | if (isGeorgianIp($_SERVER['REMOTE_ADDR'])==true){ header("Location: http://www.about.ge"); die(); } else { header("Location: http://www.about.com"); die(); } |
სულ ესაა. მაგრამ აქ არის ერთი ნიუანსიც – Ip-ების ბაზა რათქმაუნდა ცვალებადი, მატებადი და განახლებადია. შეძლებისდაგვარად შემოგთავაზებთ ip-ების განახლებულ ბაზას.
ცოცხალი მაგალითი
წარმატებულ იუზერ ქანთრი დეტექტს გისურვებთ

