Обложка к записи PHP: определение IP адреса пользователя
Время для прочтения: 1 мин. 58 сек.

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. Пруфлинк

ВКонтакте
Telegram
WhatsApp

Следующая запись

Комментарии