РНР-программа выполняется на сервере. Кто-то удаленно заходит на этот сервер для выполнения программы. Как узнать (в программе РНР), с какого IP-адреса был осуществлен вход на сервер?
PHP: function GetIP() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } return $ip; }
IP гарантированно должен быть в $_SERVER['REMOTE_ADDR'] в других случаях может быть и несколько IP через запятую и не IP вовсе.
И вот мы такие подключаем cloudflare и "Use HTTP_CF_CONNECTING_IP instead of REMOTE_ADDR". Та-дам )) p.s. ТС, можно узнать ip с которого идет запрос на сервер, но это может быть и ещё один сервер в цепочке и промежуточное прокси и vpn и всё что угодно. Короче, если ты не в интранет всё это запускаешь (где заранее известна топология сети), то идентифицировать посетителя по ip такое себе занятие.
А каким тогда образом можно идентифицировать посетителя? Вот, например, на форумах интернета как это устроено? Чтобы, к примеру, пользователь не мог одновременно создать 20 аккаунтов?
Также устроено. IP в наше время изменить в один щелчок пальцем. Никуда от дублированных акков не денешься, если это необходимо клиенту. Смирись)
Информация к размышлению: Fingerprint или Цифровой отпечаток устройства. Browser Fingerprint – анонимная идентификация браузеров.
Если тебе не нужно, чтоб кто-то посторонний заходил туда, куда не нужно, то самое простое это не искать того, кто заходит, а просто разрешить IP или диапазоны тех, кому это можно делать. Я просто не знаю какая тобой преследуется цель. IP - это не панацея, как и разные связки IP + UserAgent + COOKIE и т.п. всё это легко меняется. Так что думаю было бы более точно указать, какую ты преследуешь цель, для выяснения IP.