公告
  
欢迎回来!目前网站流量日益增多服务器负载太大,迫不得已开启邀请码注册,此为赞助,所得费用来续费服务器,感谢支持

朕已阅

常规使用
网站首页
最新动态
板块列表
悬赏大厅
个人中心
任务中心
推广中心
待添加
占位哈哈
占位哈哈
占位哈哈
占位哈哈
占位哈哈
占位哈哈
占位哈哈
占位哈哈
占位哈哈
首页 动态 发帖 版块 我的
 退出
游客  
等级:
绿豆:
经验:
×
首页  /  技术交流  /  技术杂文  /  正文

PHP获取访问者真实IP,邮箱及IP正则验证

  274 
 0
 0

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


$ip=$_SERVER["REMOTE_ADDR"];


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

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


要想透过代理服务器取得客户端的真实IP地址,就要使用getenv("HTTP_X_FORWARDED_FOR")来读取。


但是如果客户端没有通过代理服务器来访问,那么用getenv("HTTP_X_FORWARDED_FOR")取到的值将是空的。
functiongetIP()
{
static$realip;
if(isset($_SERVER)){
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$realip=$_SERVER["HTTP_X_FORWARDED_FOR"];
}elseif(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");
}elseif(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访问的防刷机制;
//方法1:
$ip=$_SERVER["REMOTE_ADDR"];
echo$ip;
//方法2:
$user_IP=($_SERVER["HTTP_VIA"])?$_SERVER["HTTP_X_FORWARDED_FOR"]:$_SERVER["REMOTE_ADDR"];
$user_IP=($user_IP)?$user_IP:$_SERVER["REMOTE_ADDR"];
echo$user_IP;

//方法3:

functiongetRealIp()
{
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip=$_SERVER["HTTP_CLIENT_IP"];
}
if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ips=explode(",",$_SERVER['HTTP_X_FORWARDED_FOR']);
if($ip){array_unshift($ips,$ip);$ip=FALSE;}
for($i=0;$i<count($ips);$i++){
if(!eregi("^(10│172.16│192.168).",$ips[$i])){
$ip=$ips[$i];
break;
}
}
}
return($ip?$ip:$_SERVER['REMOTE_ADDR']);
}
echogetRealIp();


//方法4:

if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
$ip=$HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
$ip=$HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
$ip=$HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif(getenv("HTTP_X_FORWARDED_FOR"))
{
$ip=getenv("HTTP_X_FORWARDED_FOR");
}
elseif(getenv("HTTP_CLIENT_IP"))
{
$ip=getenv("HTTP_CLIENT_IP");
}
elseif(getenv("REMOTE_ADDR"))
{
$ip=getenv("REMOTE_ADDR");
}
else
{
$ip="Unknown";
}
echo$ip;

//方法5:

if(getenv('HTTP_CLIENT_IP')){
$onlineip=getenv('HTTP_CLIENT_IP');
}elseif(getenv('HTTP_X_FORWARDED_FOR')){
$onlineip=getenv('HTTP_X_FORWARDED_FOR');
}elseif(getenv('REMOTE_ADDR')){
$onlineip=getenv('REMOTE_ADDR');
}else{
$onlineip=$HTTP_SERVER_VARS['REMOTE_ADDR'];
}
echo$onlineip;
//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"
publicstaticfunctionisEmail($email)
{
returnpreg_match("/^([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,4}([\.][a-z]{2})?$/i",$email);
}
publicstaticfunctionisNumber($num)
{
returnis_numeric($num);
}
publicstaticfunctionisUrl($url,$preg=false)
{
if($preg)
{
$status=preg_match("/^([^:\/\/])+\:\/\/[\w-]+\.[\w-.\?\/]+$/",$url);
}
else
{
$status=filter_var($url,FILTER_VALIDATE_URL);
}
return$status;
}

标签:
作者签名: 本人分享的文件以后会根据文件大小来进行分流地址下载,小于30MB的文件将不会进行分流分享,悉知!   楼主  2023-07-19 19:10:05
回复列表
Powered by HadSky 8.3.6
© 2021-2024 绿软之家
您的IP:3.147.47.145,2024-09-08 08:08:06,Processed in 0.05501 second(s).
拒绝任何人以任何形式在本网站发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表本站立场!
网站内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如内容侵害到你的权益,请联系我们!
本站资源均来自用户或互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
Powered by HadSky 8.3.6
© 2021-2024 绿软之家
ICP备案湘ICP备2020018726号-3
公安备案湘公网安备 43041202000037号
(0) 收藏文章