Время для прочтения: 0 мин. 50 сек.

PHP: определение IP адреса пользователя

Задача определения IP адреса пользователя достаточно часто встречается (например, для создания записи в логе), поэтому привожу в упрощенном виде свой метод.


/**
 * Получить данные из массива SERVER
 * @param null $key
 * @param null $default
 * @return null
 */
function getServer($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) {
    if ($proxy && getServer('HTTP_CLIENT_IP') != null) {
        $ip = getServer('HTTP_CLIENT_IP');
    } else if ($proxy && getServer('HTTP_X_FORWARDED_FOR') != null) {
        $ip = getServer('HTTP_X_FORWARDED_FOR');
    } else {
        $ip = getServer('REMOTE_ADDR');
    }
    return $ip;
}

Не делайте так! Доверяйте лишь заголовку REMOTE_ADDR. Пруфлинк

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>