千家信息网

PHP怎么获取访问者真实IP

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本篇内容主要讲解"PHP怎么获取访问者真实IP",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PHP怎么获取访问者真实IP"吧!在没有开代理服务器的情况下,
千家信息网最后更新 2024年09月22日PHP怎么获取访问者真实IP

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

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

$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"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0