Как определить IP-адрес посетителя с помощью HTML?
Как я могу определить IP-адрес посетителей, используя HTML для моего веб-сайта?
У меня есть контактная форма.html и формсент.формат html.
И когда формсент.html отправляет контактную информацию на мою электронную почту я также хочу видеть их IP-адрес!
5 ответов:
Вы не можете сделать это через HTML. Однако вы можете найти IP-адрес посетителя через PHP.
$ip=$_SERVER['REMOTE_ADDR'];
Следующий сценарий может быть вам полезен. Вы можете скопировать его и сохранить как
{whateveryouwant}.php<?php echo "Your IP is"; echo $_SERVER["REMOTE_ADDR"]; function get_ip_address() { // check for shared internet/ISP IP if (!empty($_SERVER['HTTP_CLIENT_IP']) && $this->validate_ip($_SERVER['HTTP_CLIENT_IP'])) return $_SERVER['HTTP_CLIENT_IP']; // check for IPs passing through proxies if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { // check if multiple ips exist in var $iplist = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); foreach ($iplist as $ip) { if ($this->validate_ip($ip)) return $ip; } } if (!empty($_SERVER['HTTP_X_FORWARDED']) && $this->validate_ip($_SERVER['HTTP_X_FORWARDED'])) return $_SERVER['HTTP_X_FORWARDED']; if (!empty($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']) && $this->validate_ip($_SERVER['HTTP_X_CLUSTER_CLIENT_IP'])) return $_SERVER['HTTP_X_CLUSTER_CLIENT_IP']; if (!empty($_SERVER['HTTP_FORWARDED_FOR']) && $this->validate_ip($_SERVER['HTTP_FORWARDED_FOR'])) return $_SERVER['HTTP_FORWARDED_FOR']; if (!empty($_SERVER['HTTP_FORWARDED']) && $this->validate_ip($_SERVER['HTTP_FORWARDED'])) return $_SERVER['HTTP_FORWARDED']; // return unreliable ip since all else failed return $_SERVER['REMOTE_ADDR']; } function validate_ip($ip) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false) return false; self::$ip = $ip; return true; } ?>
Ты не можешь.
HTML-это язык разметки, а не язык программирования. он ничего не "делает" - он просто структурирует контент.
Вам нужно использовать язык программирования, такой как PHP, ASP и т. д.
Вы не можете, не только через HTML.
Вам нужно использовать сценарий, в котором доступны заголовки HTTP.
Смотрите Вот такой ответ с помощью JSONP.
Для PHP вы бы использовали
$_SERVER['REMOTE_HOST'].
HTML-это язык разметки, поэтому в нем нет переменных.
Если вы хотите получить его с помощью PHP, вам нужно будет использовать суперглобальную переменную $_SERVER. Решение может быть следующим:
echo $_SERVER["REMOTE_ADDR"];Это фактически получает ip-адрес хоста, который будет вашим сервером.
Echo $_SERVER ["REMOTE_ADDR"];
Это самый простой, однако, и терпит неудачу, если пользователь находится за прокси, а также позволяет им тривиально изменить его. Гораздо лучший метод заключается в том, чтобы используя что-то вроде:
function get_ip_address() { // check for shared internet/ISP IP if (!empty($_SERVER['HTTP_CLIENT_IP']) && $this->validate_ip($_SERVER['HTTP_CLIENT_IP'])) return $_SERVER['HTTP_CLIENT_IP']; // check for IPs passing through proxies if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { // check if multiple ips exist in var $iplist = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); foreach ($iplist as $ip) { if ($this->validate_ip($ip)) return $ip; } } if (!empty($_SERVER['HTTP_X_FORWARDED']) && $this->validate_ip($_SERVER['HTTP_X_FORWARDED'])) return $_SERVER['HTTP_X_FORWARDED']; if (!empty($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']) && $this->validate_ip($_SERVER['HTTP_X_CLUSTER_CLIENT_IP'])) return $_SERVER['HTTP_X_CLUSTER_CLIENT_IP']; if (!empty($_SERVER['HTTP_FORWARDED_FOR']) && $this->validate_ip($_SERVER['HTTP_FORWARDED_FOR'])) return $_SERVER['HTTP_FORWARDED_FOR']; if (!empty($_SERVER['HTTP_FORWARDED']) && $this->validate_ip($_SERVER['HTTP_FORWARDED'])) return $_SERVER['HTTP_FORWARDED']; // return unreliable ip since all else failed return $_SERVER['REMOTE_ADDR']; } function validate_ip($ip) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false) return false; self::$ip = $ip; return true; }Это правильно анализирует поле HTTP_X_FORWARDED_FOR, а также проверяет IP, чтобы убедиться, что он имеет правильный формат, а не в частном блоке.
Comments