# AlkatraZ (21.02.2017 / 23:26)
Ты имеешь в виду, что и у себя и у других онлайн посетителей айпишники по нулям?
Да. Айпи и браузер не определяется.
# PaRtiZzaN (21.02.2017 / 23:57)
Да. Айпи и браузер не определяется.
по твоей ссылке показывает и ип и браузер
PaRtiZzaN, 0.0.0.0 может показываться в случае, когда значение, передаваемое в long2ip, выходит за пределы int. Тогда оно преобразуется в строку, а со строками long2ip не работает.
Это может возникнуть при нескольких причинах:
1. Используется 32-битная сборка php или сам сервер на x86.
2. Сервер и php 64-битные, но IP хранится в MySQL как тип int, а не unsigned int или bigint.
Но если именно все IP так показываются, тогда проблема в чём-то другом. Посмотри, что приходит в long2ip.
aNNiMON, в Джоне продумано это. Тут используется:
sprintf("%u", ip2long($ip))
Т.Е. при любом раскладе мы получим нормальный ИП.
aNNiMON, а, ты именно про long2ip, не ip2long. Да, тут просто функция юзается. В комментариях на пхп.нет к этой функции увидел след.конструкции:
function long2Ip32bit($ip){
return long2ip((float)$ip);
}
И такую:
function convertIpToString($ip)
{
$long = 4294967295 - ($ip - 1);
return long2ip(-$long);
}
ValekS, да, оба варианта с float должны работать. И я не прав был, что при выходе за границы int, число переводится в строку. Не в строку, а во float.
Nurdaulet, че за сайт у тя?
# aNNiMON (22.02.2017 / 01:58)
ValekS, да, оба варианта с float должны работать. И я не прав был, что при выходе за границы int, число переводится в строку. Не в строку, а во float.
Значит в бд установлен не верный тип?