1. Узнаём IP-адрес посетителя:
IP хранится в суперглобальном массиве $_SERVER;
пример:
$ip = $_SERVER['REMOTE_ADDR'];
2. Пишем функцию whois:
function whois($ip) {
if ($ip!="") {
$sock = fsockopen ("whois.ripe.net",43,$errno,$errstr);
if ($sock) {
fputs ($sock, $ip.
while (!feof($sock)) {
$str.=trim(fgets ($sock,128)." <br>");
}
}
else {
$str.="$errno($errstr)";
return;
}
fclose ($sock);
}
return $str;
}
получаем whois-данные для нашего IP
пример:
$whois = whois($_SERVER['REMOTE_ADDR']);
3. Выдираем с помощью регулярных выражений данные о стране
Тут уже может быть куча способов, для примера вот этот:
$need = "country:";
$pos = strpos($whois,$need);
$search = substr($whois,$pos,18);
$excount = explode(":", $search);
$country = trim($excount[1]); //готово
"$country" содержит значение страны IP-адреса.
Значение в формате: RU, UA, US, TJ...
4. Что делать? Примеры
Запрет посетителей с USA:
if($country == "US") {
echo "Your IP banned! He-he...";exit();
}
Вывод названий в другом формате (Россия, Украина, Узбекистан и т. д.):
пишем массив или берём значения из базы данных или подключаем файлы....