PHP怎么获取访问者真实IP

本篇内容主要讲解“PHP怎么获取访问者真实IP”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP怎么获取访问者真实IP”吧!

成都创新互联是一家专注于网站建设、成都网站设计与策划设计,乌鲁木齐网站建设哪家好?成都创新互联做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:乌鲁木齐等地区。乌鲁木齐做网站价格咨询:18982081108

在没有开代理服务器的情况下,直接使用:

$ip = $_SERVER["REMOTE_ADDR"];

如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址 ,反之就是真实IP;

下面是通用的一种写法,都能获取到:

要想透过代理服务器取得客户端的真实 IP 地址,就要使用 getenv("HTTP_X_FORWARDED_FOR") 来读取。
但是如果客户端没有通过代理服务器来访问,那么用getenv("HTTP_X_FORWARDED_FOR") 取到的值将是空的。

function getIP()
{
  static $realip;
  if (isset($_SERVER)){
    if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
      $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
      $realip = $_SERVER["HTTP_CLIENT_IP"];
    } else {
      $realip = $_SERVER["REMOTE_ADDR"];
    }
  } else {
    if (getenv("HTTP_X_FORWARDED_FOR")){
      $realip = getenv("HTTP_X_FORWARDED_FOR");
    } else if (getenv("HTTP_CLIENT_IP")) {
      $realip = getenv("HTTP_CLIENT_IP");
    } else {
      $realip = getenv("REMOTE_ADDR");
    } 
  }
  return $realip;
}

注意:

$_SERVER和getenv的区别,getenv不支持IIS的isapi方式运行的php
getenv(“REMOTE_ADDR”)函数在 apache下能正常获取ip地址,而在iis中没有作用,而$_SERVER['REMOTE_ADDR']函数,既可在apache中成功获取访客的ip地址,在iis下也同样有效

另外根据ip地址,可以实现类似限制IP访问的防刷机制;

php验证邮箱,代码如下:

$email = 'fengdingbo@gmail.com';             
$result = filter_var($email, FILTER_VALIDATE_EMAIL); 
var_dump($result); // string(20) "fengdingbo@gmail.com" 

php验证url地址,代码如下:

$url = "https://www.jb51.net"; 
$result = filter_var($url, FILTER_VALIDATE_URL); 
var_dump($result); // string(25) "https://www.jb51.net" 

php验证ip地址,代码如下:

$url = "192.168.1.110"; 
$result = filter_var($url, FILTER_VALIDATE_IP); 
var_dump($result); // string(13) "192.168.1.110" 
// 该方法也可以用来验证ipv6。 
$url = "2001:DB8:2de::e13";              
$result = filter_var($url, FILTER_VALIDATE_IP); 
var_dump($result); // string(17) "2001:DB8:2de::e13"
public static function isEmail( $email ) 
{ 
return preg_match("/^([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,4}([\.][a-z]{2})?$/i" , $email ); 
} 
public static function isNumber( $num ) 
{ 
return is_numeric( $num ); 
} 
public static function isUrl( $url , $preg = false ) 
{ 
if( $preg ) 
{ 
$status = preg_match ( "/^([^:\/\/])+\:\/\/[\w-]+\.[\w-.\?\/]+$/" , $url ); 
} 
else
{ 
$status = filter_var( $url , FILTER_VALIDATE_URL ); 
} 
return $status; 
}

到此,相信大家对“PHP怎么获取访问者真实IP”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


标题名称:PHP怎么获取访问者真实IP
网页网址:http://scyanting.com/article/pgepds.html