ამ პოსტში მოკლედ შემოგთავაზებთ პატარა ფუნქციას რომელიც დიდი უნიკალურობით არ გამოირჩევა, მაგრამ გამოსადეგია და მარტივი. ამ ფუნქციის მეშვეობით შეგვიძლია კონკრეტული IP ან IP-ების კლასი ჩავკეტოთ ან დავუშვათ საიტზე, უფრო სწორედ სისტემაში, მაგალითად ვებ გვერდის ადმინ პანელში (რომელშიც შესვლა გვინდა დავუშვათ კონკრეტული IP-დან თუ IP-ების კლასიდან), ან კიდევ ვებ გვერდზე (სადაც გვინდა დავბლოკოთ კონკრეტული IP თუ IP-ების კლასი).
ამისთის თავიდანვე მაქვს IP-ების ჩამონათვალის მასივი – მაგალითად
[cc lang=”php”]$_ALLOWIPS = array(‘77.56.12.*’,’95.104.67.31′);[/cc]
ანუ აქ გვიწერია რომ ვემუშავებით აიპებს, რომლებიც შედის 77.56.12. კლასში და მეორე კონკრეტულ 1 IP-ს 95.104.67.31
ეხლა გადავხედოთ ქვემოთ მოცემულ დასრულებულ ფუნქციას –
[cc lang=”php”]function allowIp($allowIps){
$tmp = array();
$guestIp = getenv(“REMOTE_ADDR”);
$guestIpLastClass = end(explode(‘.’,$guestIp));
foreach($allowIps as $key => $ip){
$tmp[$key] = (end(explode(‘.’,$ip))==’*’) ? str_replace(‘*’,$guestIpLastClass,$ip) : $ip;
}
return (in_array($guestIp,$tmp)) ? 1 : 0;
}
;[/cc]
ფუნქციის მუშაობა მარტივია და შედგება შემდეგი საფეხურებისგან
1. გადავცემთ აიპების მასივს.
2.ვიღებთ კლიენტის IP-ს.
3.ვიღებთ კლიენტის IP-ის ბოლო კლასის ციფრებს (იმისათვის თუ ეს აიპი მოხვდება გადაცემული აიპების მასივის ელემენტში, რომელიც შეიცავს არა ერთ აიპს არამედ აიპების რაღაც გარკვეულ კლასს).
4.IP-ების მასივის ელემენტში, რომელიც მთავრდება “*”-ით ვანაცვლებთ *-ს მე-3 საფეხურიდან მიღებული ციფრებით (ანუ მასივის ელემენტი, რომელიც მოიცავს მთელ კლასს).
5. და ბოლოს თუ კლიენტის აიპი მოხვდა ახალ მიღებულ (ჩვენს შემთხვევაში $tmp) მასივში აბრუნებს 1-ს თუ არა – 0.
მაგალითად ამ ფუნქციის გამოძახება შეიძლება მოხდეს შემდეგნაირად
[cc lang=”php”]if (allowIp($_ALLOWIPS)==0) die();[/cc]
ანუ თუ კლიენტის IP არ ემთხვევა ჩვენი მასივის რომელიმე 1 IP-ს მაინც მაშინ die() გამოუტანს ცარიელ გვერდს(ანა გავაკეთებთ ნებისმიერ სასურველ ექშენს).
თუ ამ ფუნქციაში (in_array($guestIp,$tmp)) -ში ჩავამატებს !-ს ანუ მივიღებთ ასეთ სახეს (!in_array($guestIp,$tmp)) მაშინ გამოგვივა შებრუნებული ფუნქცია, ანუ არათუ ვინ დავუშვათ სისტემაში არამედ ვინ არ დავუშვათ სისტემაში.
ეს არის და ეს
წარმატებულ IP კონტროლს გისურვებთ 🙂