Я пытаюсь получить публичный IP-адрес того, кто использует форму страницы, которую я делаю.
Я не знаю, с каким языком программирования это сделать. Я читал в Интернете, и я нашел некоторые:
// PHP Code
$_SERVER["REMOTE_ADDR"]
Это выводит: 127.0.0.1 (локальный IP).
Тогда я тоже нашел это:
// PHP Code
$externalContent = file_get_contents('http://checkip.dyndns.com/');
preg_match('/\b(?:\d{1,3}\.){3}\d{1,3}\b/', $externalContent, $m);
$externalIp = $m[0];
Это выводит правильный IP (Public IP), но для этого нужно использовать другую веб-страницу (http://checkip.dyndns.com/).
Интересно, как такие страницы получают публичный IP? Я ищу способ получить его без необходимости использовать другую веб-страницу. Благодарю.
$_SERVER["REMOTE_ADDR"]
должно хорошо работать для того, что вы пытаетесь сделать здесь. Причина, по которой вы получаете 127.0.0.1, заключается в том, что вы запускаете это в локальной среде.
Если вы поместите этот скрипт на живой веб-сервер, и я получу к нему доступ, вы получите тот же IP-адрес от $_SERVER["REMOTE_ADDR"]
как я получаю, когда я проверяю whatismyip
И вообще, имея серверный вызов:
$externalContent = file_get_contents('http://checkip.dyndns.com/');
только вы вернете IP-адреса своих серверов, а не посетителей.
Эта проблема меня долго ставила в тупик.
Если у вас есть доступ к вашему удаленному серверу, я решил создать простой серверный скрипт. echo $_SERVER['REMOTE_ADDR'];
чтобы дать мне публичный IP-адрес, назначенный моим провайдером для моего устройства с моего локального хоста.