Как мы можем отслеживать реальный IP-адрес за прокси-сервером с помощью PHP? Я имею в виду чистую реализацию PHP. Поскольку они могут отключить js своих браузеров.BTW, когда JS включен, я могу использовать геолокацию HTML 5, поэтому я не могу нужен IP-адрес для поиска пользователя.
Вы можете посмотреть заголовок X-Forwarded-For HTTP, если он отправлен, но нет гарантированного способа узнать.
Этот PHP-код будет работать и полезен для передовых и обратных прокси. Для обратных прокси заметите, что информация заголовка X_FORWARDED_FOR, если доступна вообще, может быть подделана и не должна быть доверена вообще.
if($_SERVER["HTTP_X_FORWARDED_FOR"] != ""){ $IP = $_SERVER["HTTP_X_FORWARDED_FOR"]; $proxy = $_SERVER["REMOTE_ADDR"]; $host = @gethostbyaddr($_SERVER["HTTP_X_FORWARDED_FOR"]); }else{ $IP = $_SERVER["REMOTE_ADDR"]; $proxy = "No proxy detected"; $host = @gethostbyaddr($_SERVER["REMOTE_ADDR"]); }
Пользователь, который находится за прокси-сервером, не имеет глобально маршрутизируемого IP-адреса. Если вы хотите сохранить состояние сеанса, вам лучше иметь ключ сеанса, который вы создаете, и установить его как файл cookie или сохранить его в URL-адресе (есть компромиссы с этим подходом).
Если вы действительно хотите узнать, что их IP-адрес находится в их собственной сети, вы, вероятно, можете использовать javascript на странице, чтобы узнать об этом, а затем отправить его обратно на свой сервер.