Как получить клиентский IP и IP Сервера с помощью направляющих

PEAR2 wiki (когда это существовало) раньше перечислял серьезные основания для отказа весь требовать/включать директивы в пользу автозагрузки луг, по крайней мере, для кода библиотеки. Они привязывают Вас к твердым структурам каталогов, когда альтернативные упаковочные модели как phar находятся на горизонте.

Обновление: Поскольку заархивированная версия сети Wiki является ужасным глазом-gougingly, я скопировал наиболее неопровержимые доводы ниже:

  • include_path требуется для использования (ГРУША) пакета. Это мешает связывать ГРУШЕВЫЙ пакет в рамках другого приложения с его собственным include_path, создавать единственный файл, содержащий необходимые классы, перемещать ГРУШЕВЫЙ пакет в архив phar без обширной модификации исходного кода.
  • , когда верхний уровень require_once смешан с условным выражением require_once, это может привести к коду, который является некэшируемым кэшами кода операции, такими как APC, который будет связан PHP 6.
  • относительный require_once требует, чтобы include_path уже были установлены до правильного значения, лишив возможности использовать пакет без надлежащего include_path

59
задан Adrian Mann 10 March 2015 в 09:30
поделиться

2 ответа

Благодарности: karim79 и Titanous.

Запишите код в контроллер

Для IP-адреса клиента:

request.remote_ip

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

Для IP-адреса сервера:

require 'socket'

def local_ip
  orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true  # turn off reverse DNS resolution temporarily

  UDPSocket.open do |s|
    s.connect '64.233.187.99', 1
    s.addr.last
  end
ensure
  Socket.do_not_reverse_lookup = orig
end
35
ответ дан 24 November 2019 в 18:18
поделиться

С вашего контроллера:

request.remote_ip

Если вы используете apache перед дворнягой, тогда remote_ip вернет исходный адрес запроса, который в данном случае будет локальным хостом, потому что Apache веб-сервер делает запрос, поэтому вместо этого поместите это в свой контроллер:

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

Чтобы получить IP-адрес сервера, см .:

Получение имени хоста или IP-адреса в Ruby on Rails

85
ответ дан 24 November 2019 в 18:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: