Ответ 1
$_SERVER['REMOTE_ADDR']
- это единственный надежный IP-адрес, который вы получите - он извлекается непосредственно из стека TCP и с которого установлено текущее соединение. Это означает, что если пользователь подключается через прокси-сервер, вы получите адрес прокси-сервера, а не пользователь.
Любые другие заголовки, основанные на заголовках, ненадежны, поскольку заголовки HTTP тривиальны для подделывания. Вы можете использовать информацию из них, если хотите, до тех пор, пока вы НЕ ДОЛЖНЫ ее использовать.