Это реальность сетей. Единственный проверенный адрес, который вы можете получить, это $_SERVER['REMOTE-ADDR']
, так как это тот, который был согласован при установлении связи TCP / IP. И этот адрес может быть просто адресом маршрутизатора, прокси-сервера, устройства NAT или чего-то еще, что вы не можете «увидеть дальше». Все остальное в заголовках HTTP совершенно недоказуемо, ненадежно и легко подделывается.
IP-адреса просто не могут быть гарантированы или ожидаемы быть уникальными или «реальными», если вы не обладаете полным контролем и не обладаете полным знанием сети между клиентом и вашим сервером.
Это связано с тем, что основанные на IP сети с коммутацией пакетов предназначены для надежной доставки данных от одного узла в сети к другому. IP-адреса являются деталями реализации этого. Ни один из них не предназначен для уникальной идентификации .