Как получить публичный IP

Я пытаюсь получить публичный 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? Я ищу способ получить его без необходимости использовать другую веб-страницу. Благодарю.

0

Решение

$_SERVER["REMOTE_ADDR"] должно хорошо работать для того, что вы пытаетесь сделать здесь. Причина, по которой вы получаете 127.0.0.1, заключается в том, что вы запускаете это в локальной среде.

Если вы поместите этот скрипт на живой веб-сервер, и я получу к нему доступ, вы получите тот же IP-адрес от $_SERVER["REMOTE_ADDR"] как я получаю, когда я проверяю whatismyip

И вообще, имея серверный вызов:

$externalContent = file_get_contents('http://checkip.dyndns.com/');

только вы вернете IP-адреса своих серверов, а не посетителей.

1

Другие решения

Эта проблема меня долго ставила в тупик.

Если у вас есть доступ к вашему удаленному серверу, я решил создать простой серверный скрипт. echo $_SERVER['REMOTE_ADDR']; чтобы дать мне публичный IP-адрес, назначенный моим провайдером для моего устройства с моего локального хоста.

0

По вопросам рекламы [email protected]