Альтернатива $ _SERVER ['REMOTE_ADDR'] в php - PullRequest
2 голосов
/ 12 мая 2011

Есть ли альтернатива $ _SERVER ['REMOTE_ADDR']. Который возвращает IP-адрес компьютера, обращающегося к сайту. Я пытаюсь найти примерно тот же внешний IP, назначенный маршрутизатором, и попал в это: Как два компьютера подключаются к одному и тому же внешнему адресу через NAT? И обнаружил, что тот же внешний ip назначается, если компьютеры подключены к одному модему. Я создаю простую программу входа в систему на php, которая использует $ _SERVER ['REMOTE_ADDR'], чтобы определить, вошел ли пользователь где-либо еще в той же сети. И это на самом деле не будет работать, если эти компьютеры подключены к одному и тому же модему через маршрутизатор.

Ответы [ 2 ]

7 голосов
/ 12 мая 2011

Нет, это лучшее, что вы можете сделать. Сервер знает только, откуда поступает запрос, и что может быть прокси-сервером или маршрутизатором NAT или каким-либо другим объектом, который не является прямым конечным пользователем. С этим ничего не поделаешь, так работают сети.

Решение простое: не используйте IP-адреса для идентификации пользователей. Когда-либо. Используйте куки.

2 голосов
/ 12 мая 2011

Использование более традиционного входа в систему на основе cookie решает эту проблему.Браузер идентифицирует пользователя, предоставляя уникальный токен.Ip, как вы обнаружили, не уникален.

...