Тип поля IP в БД

Автор Pavel, 22 декабря 2014, 13:25:34

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Pavel

Больше не вопрос, а скорее любопытство. Почему сделано именно так а не иначе.

В SMF я новичок, пользуюсь около недели. И как то раз, я задумался об отображении последних тем форума на сайте.
Поиском по БД нашел таблицу в которой хранятся темы, ей оказалась таблица с названием "smf_messages" (префикс таблиц "smf_" может отличаться от вашего). Случайно обратил внимание на поле в котором храниться IP пользователя оставившего сообщение, это поле "poster_ip". Вроде бы и нечего, но это поле типа "varchar" и к тому же длины "255" символов.

Вопрос. Не кажется ли вам это странным? хранить IP в поле с таким типом и такой длины?

Ведь лучше использовать PHP функции ip2long() и long2ip() или что-то подобное. Ведь поиск по integer быстрее чем по varchar.

Версия форума 2.0.9, кодировка UTF8
Разработка сайтов, порталов и CMS. Продажа готовых скриптов - http://guardeon.biz/

iaroslav

Дык вроде у  ip2long() и long2ip() какие-то проблемы с некоторыми типами баз данных имеются (вот, например, об этом: http://www.php.su/forum/topic.php?forum=71&topic=12793 ). А форум сделан максимально универсальным.
Плюс, возможно, имеет место задел под  ipv6 , который уже ip2long() и long2ip() не поймут.

Pavel

Сам использую ip2long в связке с MySQL, проблем пока не замечал (наверное IP6 не встречались). Да, про ip6 знаю, то я как пример привел. Но ведь длина в 255? может лучше урезать до 23х символов (если брать - 255.255.255.255.255.255)
Разработка сайтов, порталов и CMS. Продажа готовых скриптов - http://guardeon.biz/

iaroslav

Цитата: PLance от 22 декабря 2014, 14:16:25
Сам использую ip2long в связке с MySQL, проблем пока не замечал (наверное IP6 не встречались). Да, про ip6 знаю, то я как пример привел. Но ведь длина в 255? может лучше урезать до 23х символов (если брать - 255.255.255.255.255.255)
Ну, ip6 ещё и не ввели повсеместно. Но вроде как говорят о нём уже достаточно давно.
А вот с длинной действительно непонятно.