如何使用PHP获取客户端及服务器端IP的封装类

如何使用PHP获取客户端及服务器端IP的封装类,第1张

本文实例讲述了PHP获取客户端及服务器端IP的封装类。分享给大家供大家参考,具体如下:
客户端IP相关的变量:
1 $_SERVER['REMOTE_ADDR']; 客户端IP,有可能是用户的IP,也有可能是代理的IP。
2 $_SERVER['>

发一个函数给你

/
  获取客户端IP地址
  @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
  @param boolean $adv 是否进行高级模式获取(有可能被伪装) 
  @return mixed
 /
function get_client_ip($type = 0,$adv=false) {
    $type       =  $type  1 : 0;
    static $ip  =   NULL;
    if ($ip !== NULL) return $ip[$type];
    if($adv){
        if (isset($_SERVER['>}

如果是本地测试的话,获取到的是127001

$user_IP = $_SERVER["REMOTE_ADDR"];//获取访问者IP
$file_name=date('Y-m-d')'txt'//以当前的日期建立txt文件
$file=fopen($file_name,"a+");//如果存在该文件就打开,如果不存在就创建
fwrite($file,$user_IP'--'date('Y-m-d H:i:s'));//将访问者IP及当前时刻写到文件最后
fclose($file);//关闭文件

//个人觉得txt文件不会很大所以一般无需一天一删除,因为在txt里删除一些行比起数据库要麻烦一些。

本文所述php实例可以完成获取局域网所有用户的电脑IP和主机名、及mac地址的功能,对于php程序设计人员有一定的参考借鉴价值。完整代码如下:
<php
$bIp = gethostbyname($_ENV['COMPUTERNAME']); //获取本机的局域网IP
echo "本机IP:",$bIp,"\n";
echo "本机主机名:",gethostbyaddr($bIp),"\n\n\n"; //gethostbyaddr 函数可以根据局域网IP获取主机名
//默认网关IP
list($ipd1,$ipd2,$ipd3) = explode('',$bIp);
$mask = $ipd1 "" $ipd2 "" $ipd3 ;
exec('arp -a',$aIp); //获取局域网中的其他IP
foreach( $aIp as $ipv) {
if(strpos($ipv,'接口') !== false) {//一下显示的IP是否是当前局域网中的 而不是其他的类型 可以在cmd下试一下命令
$bool = false;
preg_match('/(:(:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]\d)))\){3}(:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]\d)))/',$ipv,$arr);
if(strcmp($arr[0],$bIp) == 0) {
$bool = true;
}
} else {
if($bool) {
$str = preg_replace('/\s+/', '|', $ipv);
$sArr = explode('|',$str);
if($sArr[1] == 'Internet' || empty($sArr[1])) {
continue;
}
//去除默认网关
if(strcmp($mask "1", $sArr[1]) == 0) {
continue;
}
//去除同网关下255的IP
if(strcmp($mask "255", $sArr[1]) == 0) {
continue;
}
//去除组播IP
list($cIp) = explode('', $sArr[1]);
if($cIp >= 224 && $cIp <= 239) {
continue;
}
echo "IP地址:|",$sArr[1],"|\n";
echo "MAC地址:",$sArr[2],"\n";
echo "主机名:",gethostbyaddr($sArr[1]),"\n";
echo "\n\n";
}
}
}

使用php获取IP的方法能找到很多。
function getIp(){
if (getenv(">php获取用户真实ip的方法:
方法1:
//获取REMOTE_ADDR属性,直接可以得到ip
$ip = $_SERVER["REMOTE_ADDR"];
echo $ip;
方法2:
//从Server中获取>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12773802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存