![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2006
Сообщений: 395
|
Ниже приведен код функции, возвращающей страну по ip адресу:
function country_by_ip ($ip)
{
$sock = fsockopen ("whois.ripe.net", 43, $errno, $errstr);
if (!$sock)
{
return "??";
}
else
{
fputs($sock, $ip."\r\n"); // Здесь ошибка?
while (!feof($sock))
{
$str=fgets ($sock, 128);
//echo $str; // И видим, что что-то не так с fputs
$country=substr(strstr($str,"country:"), 8);
if ($country)
{
$country=trim($country);
$country=substr($country, 0, 2);
return strtoupper($country);
}
}
return "??";
}
fclose ($sock);
}
Кто знает - просьба помочь. Нужно, чтобы возвращались страны (UA, RU, PL). |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Найти другой сервак, который выдает нужное.
|
|
|||||
|
Регистрация: Oct 2006
Сообщений: 395
|
если в этом коде добавить "echo $str;" перед "if ($country) " то видим, что ip адрес тут не передался:
а разве есть другой? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну вместо whois.ripe.net использовать что-нибудь иное. Что именно — не знаю.
|
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Нарой где-нить базу айпишников, и whois не понадобится.
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 1
|
Цитата:
|
|
|||||
|
Регистрация: May 2007
Сообщений: 22
|
Цитата:
Ну, вот я написал функцию....проверил на RU, выдает что надо...примерно так в общем: function getCountry($ip) {
$adress='http://www.ripe.net/fcgi-bin/whois?form_type=simple&full_query_string=&searchtext='.$ip.'&do_search=Search';
$str = file_get_contents($adress);
$ar = explode('country: ',$str);
$country = $ar[1];
$country = substr($country,0,2);
$country = trim($country);
return $country;
}
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А откуда такая уверенность, что символов в названии страны только два?
|
|
|||||
|
Регистрация: May 2007
Сообщений: 22
|
Хм =) Ну просто автор упомянул только три страны...и у всех двубуквенное обозначаение...
Цитата:
А сколько вообще максимально в буквенном коде стране может быть букв? Думаю...больше 4 не будет всяко? Тогда исправить 2 на 4 : и дальше как было.. |
|
|||||
|
Вырезать от "country:" до "#" или до конца строки, обтримать.
Задача на регулярные выражения для начинающих. Что характерно, автор вопроса скорее всего о нем уже забыл.
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|