|
|
|
| Просмотрел в нете предлогаемые комерческие системы статистики сайта, и на некоторых есть такая опция как
определение географического положения посетителя, вплоть до города на русском языке. Никто не знает каким чудом осуществляется такая вещь. Может через хуиз, там в принципе выдается информация об ip (провайдер, город и страна регистрации), но эта инфа не всегда в одной и тойже форме выдается и форма весьма хаотична, причем я не очень понял от чего это зависит, поэтому у меня втал вопрос, как тогда систематизировать эту информацию (к примеру, вести учет городов: Москва - 2 (66%), Санкт-Петербург -1 (33% и т.д.)). В принципе я довно уже замечал на сайтах регеональное разделение информации, даже на иностранном порнушном сайте предлогали интимные услуги в моем городе. Уж если там есть такая фича, значит это как-то делается. Вот очень интересно как? Тот-же майкрософт свободно перебразывает на русский раздел сайта. | |
|
|
|
|
|
|
|
для: multiBrain
(15.11.2005 в 11:19)
| | Скорее всего используется база данных. Посмотрите тему по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8389 | |
|
|
|
|
|
|
|
для: cheops
(15.11.2005 в 13:26)
| | А не подскажите где раздобыть такую базу (в приведенной вами теме есть ссылка, но увы она битая). И мне интересно, кто создает эти базы, и как часто ее надо обновлять. | |
|
|
|
|
|
|
|
для: multiBrain
(15.11.2005 в 13:51)
| | Что скажите на это:
http://www.nuke-tops.ru/index.php?module=plati&file=pay&id_d=152864
Доллар - не цена за базу, но вот насколько она нормальная. | |
|
|
|
|
|
|
|
|
|
для: multiBrain
(16.11.2005 в 09:55)
| | Вот практически разобрался в методикой определения города, одного момента только не понимаю в силу некоторой не грамотности.
Есть БД с дипазанам ip вот такого вида:
start_ip end_ip city_id
1040547840 1040553455 1
1042356224 1042356735 12
В описании написано, что надо перевести ip из обычного вида (xxx.xxx.xxx.xxx) в int unsigned, потом выбрать id города из ip_compact, где ip >= начальный ip-адрес и ip <= конечный ip-адрес.
Что значит перевести из xxx.xxx.xxx.xxx в int?
Есть еще и скрипт, но как назло в нем как раз нет этого момента ( function ip2long($ip)).
Разъясните дубню. | |
|
|
|
|
|
|
|
для: multiBrain
(18.11.2005 в 10:35)
| | Это значит превратить ip адрес в число. Это можно сделать средствами mysql: команды INET_ATON и INET_NTOA | |
|
|
|
|
|
|
|
для: multiBrain
(18.11.2005 в 10:35)
| | Осуществить преобразоение IP-адресов из обычной формы в числовую можно при помощи встроенной функции MySQL INET_ATON(), обратную операцию можно осуществить при помощи INET_NTOA().
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=7858 | |
|
|
|
|
|
|
|
для: cheops
(18.11.2005 в 13:07)
| | Я так пологаю, что если есть подсеть (или маска), ее надо вырезать. Кстати не поведуете, каково ее назначение. Я в этих делах полный бублик. | |
|
|
|
|
|
|
|
для: multiBrain
(18.11.2005 в 13:55)
| | Не надо ничего вырезать. У вас есть IP ($ip). Его всего лишь нужно прогнать на принадлежность к определённому диапазону.
Применительно к вашей таблице:
<?
$sql="select INET_NTOA(start_ip) as start_ip,INET_NTOA(end_ip) as end_ip,city_id";
$sql.="from ip where ";
$sql.="INET_ATON('".$ip."')>start_ip ";
$sql.="and INET_ATON('".$ip."')<end_ip";
?>
|
На выходе получаем диапазон ip и код города | |
|
|
|
|
|
|
|
для: multiBrain
(18.11.2005 в 13:55)
| | А вы откуда берёте IP-адрес? Если из $_SERVER['REMOTE_ADDR'], то ничего не нужно вырезать... маска появляется, если пользователь идёт на сайт через прокси-сервер, т.е. в $_SERVER['REMOTE_ADDR'] помещается не его адрес, а прокси-сервера. Если прокси-сервер не анонимный, то настоящий IP-адрес можно получить из серверной переменной HTTP_X_FORWARDED_FOR. | |
|
|
|
|
|
|
|
для: cheops
(18.11.2005 в 23:03)
| | Да пока ни откуда не беру ip.
Я так понимаю, если прокси аннонимный, так вообще не получится определить ничего. А в остольном как мне определится из какого источника ip брать: из $_SERVER['REMOTE_ADDR'] или HTTP_X_FORWARDED_FOR. Или это можно распределять:
<?
if(!empty($_SERVER['REMOTE_ADDR'])) $ip=$_SERVER['REMOTE_ADDR'];
elseif(!empty(getenv(HTTP_X_FORWARDED_FOR))) $ip=getenv(HTTP_X_FORWARDED_FOR);
else $ip=false;
?>
|
И что за переменная HTTP_CLIENTIP | |
|
|
|
|
|
|
|
для: multiBrain
(19.11.2005 в 09:58)
| | >Да пока ни откуда не беру ip.
>Я так понимаю, если прокси аннонимный, так вообще не
>получится определить ничего.
Нет, вы сможете определить IP-адрес прокси-сервера. От того, что он расположен в Бразилии может быть не легче, но зато можно запретить посещение с такого сервера.
>И что за переменная HTTP_CLIENTIP
Это серверная переменная, на некоторых серверах определение IP-адреса настраиваетс нестандартным образом. | |
|
|
|
|
|
|
|
для: cheops
(19.11.2005 в 12:06)
| | 2cheops а вы сами не ведете свою статистику ip адресов? Может вы сольете бд с ip? | |
|
|
|
|
|
|
|
для: Akira
(19.11.2005 в 12:22)
| | Прокси-серверов имеется ввиду? Нет не ведём... они же постоянно меняются, имеются постоянно обновляемые списки... Мы не отслеживаем, так как потребности не было. | |
|
|
|
|
|
|
|
для: cheops
(19.11.2005 в 12:06)
| | Так в итоге откуда следует брать ip: из _SERVER['REMOTE_ADDR'] или HTTP_X_FORWARDED_FOR.
Чего-то я так до конца и не понял | |
|
|
|
|
|
|
|
для: multiBrain
(19.11.2005 в 12:34)
| | Из $_SERVER['REMOTE_ADDR'] - так как обращения идут именно с этого IP-адреса. | |
|
|
|
|
|
|
|
для: multiBrain
(15.11.2005 в 11:19)
| | Вот еще одно решение проблемы ! http://www.novis.ru/geo.php | |
|
|
|
|
|
|
|
для: kipish
(25.02.2006 в 15:37)
| | Кстати, неплохой пример неграмотной реализации защиты с картинкой: при передаче скрипту одного и того же кода, получаем один и тот же пароль. | |
|
|
|