Этот код PHP ...
207 if (getenv(HTTP_X_FORWARDED_FOR)) {
208 $ip = getenv('HTTP_X_FORWARD_FOR');
209 $host = gethostbyaddr($ip);
210 } else {
211 $ip = getenv('REMOTE_ADDR');
212 $host = gethostbyaddr($ip);
213 }
Выдает это предупреждение ...
Warning: gethostbyaddr() [function.gethostbyaddr]: Address is not in a.b.c.d form in C:\inetpub...\filename.php on line 212
Кажется, что $ ip пусто.






Почему бы тебе не использовать
$_SERVER['REMOTE_ADDR']
и
$_SERVER['HTTP_X_FORWARDED_FOR']
на php.net написано следующее:
The function
getenvdoes not work if your Server API is ASAPI (IIS). So, try to don't usegetenv('REMOTE_ADDR'), but$_SERVER["REMOTE_ADDR"].
А может с $_SERVER пробовали сделать?
Прежде всего, getenv () принимает строку в качестве параметра. В строке 207 вы должны использовать:
getenv('HTTP_X_FORWARDED_FOR')
...вместо:
getenv(HTTP_X_FORWARDED_FOR)
Во-вторых, доступ к этим переменным через $ _SERVER является более надежным решением, поскольку getenv () имеет тенденцию отображать различное поведение на разных платформах.
Кроме того, эти переменные, вероятно, не будут работать, если вы запускаете этот сценарий через интерфейс командной строки.
Попробуйте var_dump ($ ip); и посмотрите, что содержит переменная.
Лучшее решение уже было предложено. Но до сих пор:
getenv('HTTP_X_FORWARD_FOR');
должно быть
getenv('HTTP_X_FORWARDED_FOR');
Да ... иногда компьютерам нужны понятные им строки ;-)