ძალიან მაგარი ფილმია, როგორც უმეტესი ქართული ფილმები, მაგრამ ამ პოსტს არანაირი კავშირი არ ააქვს ამ ფილმთან გარდა პოსტის სათაურისა 😉 მოკლედ განვიხილოთ რა გვინდა. ხშირად არის შემთხვევა როცა გვსურს ჩვენს საიტზე ქართველი ვიზიტორის დადგენა, ამის თითქმის ერთადერთი საშუალება არის ვიზიტორის ip-ის დადგენა, გარჩევა და შესაბამისი რეაგირება. არსებობს უცხოური რესურსები, რომლებიც გვაძლევენ მსოფლიო ip-ების სიას, დაჯგუფებულს ქვეყნების მიხედვით და შემდგომ შეგვიძლია მისი გარჩევა.
მე მინდა შემოგთავაზოთ შედარებით ლაკონური და უფრო სწრაფი მეთოდი ქართული Ip-ების აღმოსაჩენად. ამისთვის ვიღებთ ქართული Ip-ების ბაზას (29.05.2010-ის მდგომარეობით) , ვიგებთ ვიზიტორის Ip-ს, ვურევთ ერთმანეთში და ვიზიტორის Ip თუ არსად არ დაიკარგა ე.ი. ვიზიტორი ქართული Ip-დან არის.
[cc lang=”php”]
‘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’.
[/cc]
მოცემულ მაგალითში 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 და მივიღებთ შეზავებულ ფუნქციას –
[cc lang=”php”]
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;
}
[/cc]
უკვე ფუნქციიდან მიღებული პასუხით შეგვიძლია შევასრულოთ ის რაც გვსურს (გვერდის გადამისამართება, ენის ავტომატური მინიჭება და.ა.შ. )
[cc lang=”php”]
if (isGeorgianIp($_SERVER[‘REMOTE_ADDR’])==true){
header(“Location: http://www.blog.readme.ge”);
die();
} else {
header(“Location: http://www.about.com”);
die();
}
[/cc]
სულ ესაა. მაგრამ აქ არის ერთი ნიუანსიც – Ip-ების ბაზა რათქმაუნდა ცვალებადი, მატებადი და განახლებადია. შეძლებისდაგვარად შემოგთავაზებთ ip-ების განახლებულ ბაზას.
ცოცხალი მაგალითი
წარმატებულ იუზერ ქანთრი დეტექტს გისურვებთ 🙂
განახლება:
Ip-ების განახლბული ბაზის გადმოწერა შეგიძლიათ შემდეგი მისამართიდან – http://software77.net/geo-ip/
მარცხნივ Country IP listing-ში ვირჩევთ სასურველ ქვეყანას (Ge Georgia) და ვიწერთ.
.
კარგი სტატიაა. განახლებული მისამართების სია ხომ არ გაქვთ?
რადგან დაინტერესდი ახალი მისამართებით, მაქსიმუმ ხვალ დავდებ განახლებულ ბაზას.
მემგონი ეს უფრო მოხერხებულია იმ უპირატესობით რომ ბაზა არ გჭირდება:
<?php
$country = file_get_contents('http://ip2.cc/?api=cc&ip=127.0.0.1');
echo $country; //GE
@ოთო
პრინციპში გეთანხმები, იმიტომ რომ მალე ქართული ვარიანტიც ჩაირთვება ეგეთი
გამარჯობა , მაქვს ესეთი კოდი და მინდა რომ ასევე დავაფიქსირო ქართველი და ქართული ფაილი ჩავურთო
if(isset($_POST[‘submit’])) {
require (“georgia/qartuli.php”);
}
მაქვს ეს და მინდა ესე, თუ დააჭირა მაგ კნოპკას && ან ქართველია ეგრევე რომ მისცეს require ესე არ გამოვა ? ჩVეულებრივ ჩავსვი ხოდა ერორი ამოაგდო
@ლევანი
გამოვა, უბრალოდ რაღაც სხვა შეცდომა გაქვს.
დამეხმარებით შედგენაში ?
აქ არის კიდე რაღაცშეცდომა არ ამუშავა შეცდომააო
$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;
}
მარტო ესეც რომ ჩავსვი შეცდომა დაწერა
გთხოვ დამეხმარე რა როცა გეცლება.