Хорошо, просто, Джо, я вижу, вы запутались в этом аргументе, и в этом есть моя большая роль.
Еще несколько объяснений для вас.
Ответ зависит от задачи. У вас есть 2 варианта:
Если вам нужен только один IP-адрес, вы можете использовать только REMOTE_ADDR и больше ничего. Посмотрите на журнал доступа веб-сервера: есть только один IP-адрес, и он REMOTE_ADDR. По крайней мере, он гарантировал вам действительный IP-адрес. Во многих случаях, как счетчик трафика, это единственное, на что вы можете положиться. Это общий ответ на вопрос «Как получить IP-адрес».
Если вы хотите записать адрес, который, возможно, может быть более точным - так, никто не запрещает вам записывать много адресов, а не один. Но, конечно, вы должны записывать эти заголовки HTTP вместе с REMOTE_ADDR, а не вместо него. Есть некоторая польза для такой толпы адресов. Но вы не можете полагаться на это слишком сильно. Но вы можете извлечь из него некоторую информацию, если вам не все равно.
Единственный случай для заголовка FORWARDED_FOR - неправильно настроенный веб-сервер, который помещает реальный IP-адрес в эту переменную. В этом случае его можно использовать как IP-адрес. Но, конечно, это должно быть сделано вручную, в каждом конкретном случае, а не в качестве общей рекомендации. Но в любом случае я бы вышел из такого веб-сервера, поскольку в нем не может быть только одной неверной конфигурации.