PHP: определение IP адреса пользователя
Задача определения IP адреса пользователя достаточно часто встречается (например, для создания записи в логе), поэтому привожу в упрощенном виде свой метод.
/**
* Получить данные из массива SERVER
* @param null $key
* @param null $default
* @return null
*/
function get_server( $key = null, $default = null ) {
if ( null === $key ) {
return $_SERVER;
}
return ( isset( $_SERVER[ $key ] ) )
? $_SERVER[ $key ]
: $default;
}
/**
* Получить IP адрес клиента
* @param boolean $proxy
* @return string
*/
function getClientIp( $proxy = true ) {
// Cloudflare.
if ( $proxy && get_server( 'HTTP_CF_CONNECTING_IP' ) != null ) {
$ip = get_server( 'HTTP_CF_CONNECTING_IP' );
} elseif ( $proxy && get_server('HTTP_CLIENT_IP' ) != null ) {
$ip = get_server( 'HTTP_CLIENT_IP' );
} elseif ( $proxy && get_server( 'HTTP_X_FORWARDED_FOR' ) != null ) {
$ip = get_server( 'HTTP_X_FORWARDED_FOR' );
} else {
$ip = get_server( 'REMOTE_ADDR' );
}
return $ip;
}
Не делайте так! Доверяйте лишь заголовку REMOTE_ADDR
. Пруфлинк
Очень нехороший способ. См. http://habrahabr.ru/post/158417/.
Так, вроде, у меня как раз код, аналогичный Zend Framework 1
Ну а в нём, как раз, очень небезопасный метод.
Точняк, плохо читал статью 🙂