Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как по IP узнать страну, город, ISP пользователя?
 
 автор: Dobby91   (09.11.2007 в 11:57)   письмо автору
 
 

Вообщем я рассматриваю 2 пути решения данной проблемы.
Первый:
1. Сделать запрос к whois базе данных ip-адресов (например, whois.ripe.net)
2. Обработать полученный алгоритм и выяснить оттуда телефонный код города (это то у меня получается. Можете даже сами посмотреть (выдается информация о вашем текущем ИП): http://dobby.blogsite.org/algoritm1/ - но данный сайт находится у меня на компе. и попадете ли вы на него или нет зависит от "включенности" моей машины)
3. Затем из кода города определить сам город по определенной базе данных. Но в этом то как раз и проблема что у меня нет такой базы. Может у кого она уже есть и он сможет выложить ее на каком-нибудь ресурсе?

Второй путь это:
1. Также сделать запрос к whois базе данных
2. По уже определнному алгоритму обработать полученный ответ и привести его к виду [страна, город, ISP]. Но загвоздка в том, что неизвестно какую структуру будет иметь полученный ответ. Либо он будет выглядеть так:

person: Alexander Remiga
address: JSC UKRTELECOM
address: 18, Shevchenko blvd.
address: 01030, Kiev, Ukraine
phone: +380 (44) 246-4416
fax-no: +380 (44) 226-2586
e-mail: aremiga@ukrtel.net
nic-hdl: ARM3-RIPE
source: RIPE # Filtered

route: 82.207.0.0/17
descr: AGGREGATE BLOCK FOR UKRTELECOM
origin: AS6849
mnt-by: AS6849-MNT
source: RIPE # Filtered

Либо так:

person: Ernazar Eleuov
address: JSC Kazakhtelecom, Pavlodar Affiliate address:60 Ak. Bekturov Str.
address: Pavlodar, 140000
address: Kazakhstan
phone: +7 7182 309030
phone: +7 7182 309016
e-mail: ernazar.eleuov@telecom.kz
nic-hdl: EE858-RIPE
source: RIPE # Filtered

route: 89.218.0.0/16
descr: Kazakhtelecom Data Network Administration
origin: AS9198
mnt-by: KNIC-MNT
source: RIPE # Filtered

Есть некоторые нароботки по поводу этого способа: http://dobby.blogsite.org/algoritm2/ - работоспособность также зависит от "включенности" машины...
Есть ли у кого идеи решения данной проблемы? For Free естественно...

   
 
 автор: mihdan   (09.11.2007 в 11:58)   письмо автору
 
   для: Dobby91   (09.11.2007 в 11:57)
 

http://php.ru/ip2country/

   
 
 автор: Dobby91   (10.11.2007 в 13:30)   письмо автору
 
   для: mihdan   (09.11.2007 в 11:58)
 

mihdan,
То что ты мне дал является базой данных лишь стран да и то не совсем правильной. Мне то нужно узнать еще город и ISP (Intenet service provider) пользователя...

   
 
 автор: Shiva   (10.11.2007 в 14:06)   письмо автору
 
   для: Dobby91   (10.11.2007 в 13:30)
 

У меня есть база стран и городов. Но без провайдеров.

   
 
 автор: Dobby91   (10.11.2007 в 14:32)   письмо автору
 
   для: Shiva   (10.11.2007 в 14:06)
 

а на что база то эта опирается? на префиксы телефонов или IP? но в любом случае интересно посмотреть будет... я тут тоже наскачивал кучу... хотелось бы что-то лучшее выбрать...

   
 
 автор: LuxeMate   (10.11.2007 в 23:51)   письмо автору
 
   для: Dobby91   (10.11.2007 в 14:32)
 

Подключайся к системе whois посредством сокетов и посредством регулярки выдирай нужную тебе инфу, делов то, никаких баз ненада ;)

   
 
 автор: Dobby91   (11.11.2007 в 19:05)   письмо автору
 
   для: LuxeMate   (10.11.2007 в 23:51)
 

Если б все так просто было... Ты сам посмотри на первое сообщение...
НЕИЗВЕСТНО КАКУЮ СТРУКТУРУ БУДЕТ ИМЕТЬ ОТВЕТ ОТ СЕРВЕРА (СИСТЕМЫ whois) т.е. неизвестно где именно будет расположена строка страны,города, isp.
Например формат может быть таким:
adress: Kiev,Ukraine,170000
или таким:
adress: Kiev
adress: Ukraine
adress: 170000

и как ты себе это представляешь?

   
 
 автор: LuxeMate   (12.11.2007 в 01:23)   письмо автору
 
   для: Dobby91   (11.11.2007 в 19:05)
 

Я представляю это так, что регулярка будет выдирать всё что у тебя после adress, какая разница в строчку или в столбик?

   
 
 автор: Shiva   (11.11.2007 в 16:56)   письмо автору
 
   для: Dobby91   (10.11.2007 в 14:32)
 

На ip.
Выложил сюда:
http://www.teracomp.ru/ip.sql

   
 
 автор: Dobby91   (12.11.2007 в 09:47)   письмо автору
 
   для: Shiva   (11.11.2007 в 16:56)
 

А эта "база" обновляется как-то и кем-то вообще? А то если последнее обновление было 2003 года, то неприятно как-то будет когда пользователю из россии выдаст что он живет в амстердаме ))

   
 
 автор: Shiva   (12.11.2007 в 21:07)   письмо автору
 
   для: Dobby91   (12.11.2007 в 09:47)
 

База за 2007.

Но обновлений не предвидится)

   
 
 автор: USЁR   (11.11.2007 в 00:25)   письмо автору
 
   для: Dobby91   (09.11.2007 в 11:57)
 

Я так писаль
www.hardcms.com/ip.php


<!doctype html public "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>IT STUDIO HARDCMS IP ADRESS INFO</title>
</head>
<body background="http://www.hardcms.com/bg.gif">
<center>
<form action=ip.php method=post>
<br>
</i></b></font>
<br>
<input type=text name=ip size35><br>
<div><font color=#FFFFFF>Вош IP Адрес</div>
<input type=submit value='GO!'><br>
<center><a href='http://www.hardcms.com/ip.php' target='_blank'><img src='http://viewyourip.com/ipimage.php' border='0' width='140' height='22' title='Powered by IT STUDIO HARDCMS'></a>
</form>
</center>
<cemter>
<?php
if (!empty ($_POST["ip"]))
{
//
//

$sock=fsockopen("whois.ripe.net", 43, $errno, $errstr);
if (!$sock)
{
echo ("$errno($errstr)");

return;
}
else
{
//

fputs ($sock, $_POST["ip"]."\r\n");
//
while (!feof($sock))
{
echo (str_replace(":",": ;", fgets($sock,128))."<br>");
}
}
//
fclose ($sock);
}

?>
</body>
</html>
Resultat

descr: ; Caucasus Network
origin: ; AS28751
mnt-by: ; CAUCASUS-NET-MNT
source: ; RIPE # Filtered

Prymer=)

   
 
 автор: mihdan   (11.11.2007 в 13:54)   письмо автору
 
   для: Dobby91   (09.11.2007 в 11:57)
 

http://softtime.ru/scripts/whois.php

   
 
 автор: ddhvvn   (11.11.2007 в 14:22)   письмо автору
 
   для: mihdan   (11.11.2007 в 13:54)
 

Тему немного исказили....

Изначально требуется определить даные ПОЛЬЗОВАТЕЛЯ!

   
 
 автор: Dobby91   (11.11.2007 в 19:05)   письмо автору
 
   для: mihdan   (11.11.2007 в 13:54)
 

я вообще ссылки давал вам в первом сообщении... С подключением к серверу и выдиранием оттуда всех строк адреса (adress) все тик-ток а вот чтоб выставить эти все строки в формате {страна, адресс} проблема. Я уже писал раннее что формат ответа (получаемый от сервера после выполнения запроса) может быть различным. А то что вы мне предлагаете просто выдаст его в оригинальном варианте. Мне же надо привести этот ответ к виду [страна, город (ну и ISP если получится)]...

   
 
 автор: LuxeMate   (12.11.2007 в 01:27)   письмо автору
 
   для: Dobby91   (11.11.2007 в 19:05)
 

просто смотрите если после adress: стоят запятые то выполняйте одну регулярку, а если нет то другую

   
 
 автор: Dobby91   (12.11.2007 в 09:43)   письмо автору
 
   для: LuxeMate   (12.11.2007 в 01:27)
 

А если строки адреса будет иметь такой вид:
address: JSC UKRTELECOM
address: 18, Shevchenko blvd.
address: 01030, Kiev, Ukraine
или же так (в тупую):
address: JSC UKRTELECOM, 18, Shevchenko blvd, 01030, Kiev, Ukraine,

В первом примере на второй и третий строке адреса присутствуют запятые. И как по-вашему php-скрипт определит какая из этих строк относится к улице а какая к городу и стране?
Про второй пример даже говорить не стоит...

   
 
 автор: LuxeMate   (12.11.2007 в 18:35)   письмо автору
 
   для: Dobby91   (12.11.2007 в 09:43)
 

крч побился со скриптом, но я так и не понял...если различия в том какая инфа выводятся не постоянные то это фактически нереально сделать) опять понадобится база для проверки данных :))

   
 
 автор: Dobby91   (13.11.2007 в 16:24)   письмо автору
 
   для: LuxeMate   (12.11.2007 в 18:35)
 

Вот-вот... Для того сюда и обратился...
Нужна дополнительная база которая бы опиралась либо на телефоны (что весьма желательно, так как телефоные коды городов меняются гораздо реже айпишников...), либо на сами айпишники, но при этом бы постоянно обновлялась...

   
 
 автор: Unreal   (13.11.2007 в 17:21)   письмо автору
 
   для: Dobby91   (13.11.2007 в 16:24)
 

На whois вообще бессмысленно ориентироваться, я на нескольких доменах левую инфу вбивал.

>> Нужна дополнительная база которая бы опиралась либо на телефоны
>> (что весьма желательно, так как телефоные коды городов меняются гораздо
>> реже айпишников...), либо на сами айпишники, но при этом бы постоянно обновлялась.

http://www.maxmind.com/app/geolocation

   
 
 автор: Dobby91   (13.11.2007 в 19:09)   письмо автору
 
   для: Unreal   (13.11.2007 в 17:21)
 

> http://www.maxmind.com/app/geolocation
Слушай ты ее сам устанавливал вообще? Если да то напиши как. А то я че-то парюсь... Вроде все делаю по инструкции но пока не получается... В любом случае спасибо за участие.

   
 
 автор: LuxeMate   (15.11.2007 в 15:14)   письмо автору
 
   для: Dobby91   (13.11.2007 в 19:09)
 

предлогаю другой вариант, конектись к http://www.ip-adress.com/ и оттуда выдирай нужную инфу :)

   
 
 автор: Dobby91   (16.11.2007 в 08:47)   письмо автору
 
   для: LuxeMate   (15.11.2007 в 15:14)
 

Да я про этот ресурс знаю. Но дело в том что, например, мой IP (89.218.177.192) он отражает как Казахстан, Алматы (совсем близко... 1500км от меня :-)). Что он будет у других писать?.. Бог его знает...
Кстати я это дело уже забацал. Потестите если че. Залил временно сюда: http://funny-signs.jino-net.ru/

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования