ОС: UBUNTU
Устройство сервера:
1. Nginx прокси.
2. Apache для работы PHP
3. Установлен PHP 7
IP пользователя проверяю этой функцией
public function get_client_ip() {
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
Но иногда вижу в db пустые записи вместо IP пользователя. (под поле ip в бд выделено 50 символов типа VARCHAR)
В чём может быть причина?- Функция устарела?
- Nginx неправильно настроен?
- В PHP 7 IP определяется по другому?
- IPv6?