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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Есть база данных всех IP адресов в мире. Как определить с помощью этой базы страну пользователя?

Сообщения:  [1-10]    [11-20]   [21-30]  [31-33] 

 
 автор: Vyacheslav Tsv.   (15.01.2010 в 23:00)   письмо автору
 
   для: Trianon   (11.01.2010 в 13:53)
 

Посмотрим!

  Ответить  
 
 автор: Vyacheslav Tsv.   (12.01.2010 в 09:42)   письмо автору
 
   для: Саня   (11.01.2010 в 13:40)
 

Спасибо, за понимание и советы, но всё же не стоит, права, не стоит.

  Ответить  
 
 автор: @ndry   (11.01.2010 в 18:25)   письмо автору
 
   для: Loki   (11.01.2010 в 17:36)
 

Если я правильно понял что вы имели ввиду, то следует понимать PHP вообще такого понятия как uns int не существует и то, в каком виде мы получаем int из базы ничего не изменит (будет ли там значение знака или нет PHP обрабатывает его как int). В самой же базе IP вполне поместится.

  Ответить  
 
 автор: Loki   (11.01.2010 в 17:36)   письмо автору
 
   для: Саня   (11.01.2010 в 16:32)
 

Влезает если без знака, а @ndry предлагает как раз наоборот: "в базе uns int, а нам нужно чтобы хранился int"

  Ответить  
 
 автор: Trianon   (11.01.2010 в 17:15)   письмо автору
 
   для: Саня   (11.01.2010 в 15:12)
 

Пусть делает, как считает нужным.
:)

  Ответить  
 
 автор: Саня   (11.01.2010 в 16:32)   письмо автору
 
   для: Loki   (11.01.2010 в 16:23)
 

Влезает. Int в РНР 4-байтный (8-байтный на 64-битных платформах).

  Ответить  
 
 автор: Loki   (11.01.2010 в 16:23)   письмо автору
 
   для: @ndry   (11.01.2010 в 15:42)
 

Может я чего не понимаю, но ip в int не влезает...

  Ответить  
 
 автор: Саня   (11.01.2010 в 16:10)   письмо автору
 
   для: @ndry   (11.01.2010 в 15:42)
 

Ах вот оно что! Стоит ли нарушать совместимость со всеми существующими geoip базами ради сомнительной, ничем не подтверждённой, выгоды? Я считаю что нет.

  Ответить  
 
 автор: @ndry   (11.01.2010 в 15:42)   письмо автору
 
   для: Саня   (11.01.2010 в 15:38)
 

> преобразование int в unsigned int
Опечатка, наоборот, в базе uns int, а нам нужно чтобы хранился int

Может почитайте внимательно что я сказал выше?

У вас будет:
$num_ip = sprintf('%u', ip2long($ip));

У меня будет:
$num_ip = ip2long($ip);

  Ответить  
 
 автор: Саня   (11.01.2010 в 15:38)   письмо автору
 
   для: @ndry   (11.01.2010 в 15:25)
 

> У человека есть база ... В ней хранятся адреса в форме unsigned int
> ...
> Я предлагаю провести операцию с базой ... преобразование int в unsigned int
No comments.

IP-адрес посетителя (не важно откуда получим, скорее всего из REMOTE_ADDR) всегда будет в формате xxx.xxx.xxx.xxx. Чтобы проще искалось нужно перевести его в uint и выполнить запрос.

Ещё раз, по пунктикам:
1. Получаем IP-адрес посетителя сайта
2. Полученный адрес переводим в uint
3. Производим поиск по базе, в которой все диапазоны записаны в uint
4. Получаем результат

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]  [31-33] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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