|
|
|
| как определить к какой стране относится данный IP?
IP я определяю. А вот страну как определить не знаю.
Подскажите пожалуйста. | |
|
|
|
|
|
|
|
для: Feniks2008
(11.07.2008 в 19:34)
| | С помощью базы GEOIP которую можно достать погуглив. GEOIP базу, разобрать, установить в таблицу MySQl и сравнивать не полный IP пользователя, например полный 127.0.0.0 вырезать все до 3 точки и в таблицы MySQL если есть ответ то вытаскивать страну - можно вытащить как в полном названии так и в трех - двух кодовом например USA или RU
Успехов.. | |
|
|
|
|
|
|
|
для: Feniks2008
(11.07.2008 в 19:34)
| | Нужно собрать базу IP провайдеров.
Где-нибудь скачать или вручную собрать с помощью whois
Потом примерно такими запросами узнавать инфу
SELECT DISTINCT
*
FROM
`IPs`
WHERE
INET_ATON("'.IP.'") BETWEEN `IP_start` AND `IP_end`
LIMIT 1
|
| |
|
|
|
|
|
|
|
для: а-я
(12.07.2008 в 21:08)
| | Да и еще..
Дергаем Ip пользователя. И используем whois для опредиления страны.
Вот скрипт который за 1 секунду выдал мне данные о моем IP адресе.
<center>
<form method=post>
<input type=text name=ip size=35>
<input type=submit value='Введите IP-адрес'>
</form>
</center>
<?php
if(!empty($_POST['ip'])) echo whois("whois.arin.net",$_POST['ip']);
function whois($url,$ip)
{
// Соединение с сокетом TCP, ожидающим на сервере "whois.arin.net" по
// 43 порту. В результате возвращается дескриптор соединения $sock.
$sock = fsockopen($url, 43, $errno, $errstr);
if (!$sock) exit("$errno($errstr)");
else
{
echo $url."<br>";
// Записываем строку из переменной $_POST["ip"] в дескриптор сокета.
fputs ($sock, $ip."\r\n");
// Осуществляем чтение из дескриптора сокета.
$text = "";
while (!feof($sock))
{
$text .= fgets ($sock, 128)."<br>";
}
// закрываем соединение
fclose ($sock);
// Ищем реферальный сервере
$pattern = "|ReferralServer: whois://([^\n<:]+)|i";
preg_match($pattern, $text, $out);
if(!empty($out[1])) return whois($out[1], $ip);
else return $text;
}
}
|
Вот http://softtime.ru/scripts/whois.php | |
|
|
|