如何检测访客';使用HTML的IP地址?

如何检测访客';使用HTML的IP地址?,html,web,ip-address,Html,Web,Ip Address,如何使用HTML检测我的网站的访问者IP地址? 我有一个contactform.html和一个formsent.html。 当formsent.html将联系人信息发送到我的电子邮件时,我也想查看他们的IP地址 你不能,不仅仅是通过HTML 您需要使用具有可用HTTP头的脚本 请参阅使用JSONP 对于PHP,您将使用$\u服务器['REMOTE\u HOST']您不能 HTML是一种标记语言,而不是编程语言。它不“做”任何事情——它只是构建内容 您需要使用编程语言,如PHP、ASP等。您不能通

如何使用HTML检测我的网站的访问者IP地址? 我有一个contactform.html和一个formsent.html。
当formsent.html将联系人信息发送到我的电子邮件时,我也想查看他们的IP地址

你不能,不仅仅是通过HTML

您需要使用具有可用HTTP头的脚本

请参阅使用JSONP

对于PHP,您将使用
$\u服务器['REMOTE\u HOST']

您不能


HTML是一种标记语言,而不是编程语言。它不“做”任何事情——它只是构建内容


您需要使用编程语言,如PHP、ASP等。

您不能通过HTML来完成。但是,您可以通过PHP找到访问者的IP地址

$ip=$_SERVER['REMOTE_ADDR'];

HTML是一种标记语言,因此它没有任何变量

如果希望使用PHP获得它,则需要使用$\u SERVER superglobal变量。解决办法可以是:

echo $_SERVER["REMOTE_ADDR"];
这实际上得到了主机ip,这将是您的服务器

echo$_服务器[“远程地址”]

但是,这是最基本的,如果用户在代理后面,并且允许他们对其进行简单的更改,则会失败。一个更好的方法是使用以下方法:

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以确保其格式正确,且不在专用块中。

以下脚本可能对您有用。您可以复制它并将其保存为
{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;
 }
?>

$ip=$\u服务器['REMOTE\u ADDR']


此命令显示服务器ip地址而不是用户本地ip地址,因为这是php命令。由于此原因,此命令符合服务器中的代码。如果您可以使用JQuery但无法访问php,则此命令将显示服务器ip地址。它是免费的,对请求的数量没有限制


函数getIP(json){
编写(“我的公共IP地址是:”,json.IP);
}

这不是从HTML(或JavaScript)中获得的。您可以从处理contactform.html的脚本中获得它。然后我如何在PHP中使用它?@LukeyBoyIsXen use$_SERVER['REMOTE_HOST']这还包括了用户能够伪造其地址的可能性。另外,远程地址将始终被设置,因此剩余的地址永远不会被使用。你是对的。我把它改了一圈,所以它先检查转发,然后检查其他转发。事实上,整个答案都是废话。我重写它是为了更好。对大多数用户来说应该是一样的,但是将区分代理后面的用户,而不是将代理IP放在那里。这意味着如果你被IP阻止,你不会意外地阻止整个公司。但是在$IP之前它的值是什么样的现在是什么?好的,已经删除了错误的}。再试一次!