PHP获取访客IP和地理位置等信息的类_莫枫恋_新浪博客

本文提供了一个使用PHP实现的功能丰富的代码片段,用于获取用户的语言偏好、浏览器类型、操作系统、IP地址、地区和ISP信息。代码通过HTTP请求头进行解析,并利用正则表达式和函数来精确识别各项信息。

[代码] [PHP]代码

001<?php  
002 
015class class_guest_info{  
016    function GetLang() {  
017        $Lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4);  
018        //使用substr()截取字符串,从 0 位开始,截取4个字符  
019        if (preg_match('/zh-c/i',$Lang)) {  
020        //preg_match()正则表达式匹配函数  
021            $Lang = '简体中文';  
022        }  
023        elseif (preg_match('/zh/i',$Lang)) {  
024            $Lang = '繁體中文';  
025        }  
026        else {  
027            $Lang = 'English';  
028        }  
029        return $Lang;  
030    }  
031    function GetBrowser() {  
032        $Browser = $_SERVER['HTTP_USER_AGENT'];  
033        if (preg_match('/MSIE/i',$Browser)) {  
034            $Browser = 'MSIE';  
035        }  
036        elseif (preg_match('/Firefox/i',$Browser)) {  
037            $Browser = 'Firefox';  
038        }  
039        elseif (preg_match('/Chrome/i',$Browser)) {  
040            $Browser = 'Chrome';  
041        }  
042        elseif (preg_match('/Safari/i',$Browser)) {  
043            $Browser = 'Safari';  
044        }  
045        elseif (preg_match('/Opera/i',$Browser)) {  
046            $Browser = 'Opera';  
047        }  
048        else {  
049            $Browser = 'Other';  
050        }  
051        return $Browser;  
052    }  
053    function GetOS() {  
054        $OS = $_SERVER['HTTP_USER_AGENT'];  
055        if (preg_match('/win/i',$OS)) {  
056            $OS = 'Windows';  
057        }  
058        elseif (preg_match('/mac/i',$OS)) {  
059            $OS = 'MAC';  
060        }  
061        elseif (preg_match('/linux/i',$OS)) {  
062            $OS = 'Linux';  
063        }  
064        elseif (preg_match('/unix/i',$OS)) {  
065            $OS = 'Unix';  
066        }  
067        elseif (preg_match('/bsd/i',$OS)) {  
068            $OS = 'BSD';  
069        }  
070        else {  
071            $OS = 'Other';  
072        }  
073        return $OS;  
074    }  
075    function GetIP() {  
076        if (!emptyempty($_SERVER['HTTP_CLIENT_IP'])) {  
077        //如果变量是非空或非零的值,则 empty()返回 FALSE。  
078            $IP = explode(',',$_SERVER['HTTP_CLIENT_IP']);  
079        }  
080        elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR'])) {  
081            $IP = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);  
082        }  
083        elseif (!emptyempty($_SERVER['REMOTE_ADDR'])) {  
084            $IP = explode(',',$_SERVER['REMOTE_ADDR']);  
085        }  
086        else {  
087            $IP[0] = 'None';  
088        }  
089        return $IP[0];  
090    }  
091    private function GetAddIsp() {  
092        $IP = $this->GetIP();  
093        $AddIsp = mb_convert_encoding(file_get_contents('http://open.baidu.com/ipsearch/s?tn=ipjson&wd='.$IP),'UTF-8','GBK');  
094        //mb_convert_encoding() 转换字符编码。  
095        if (preg_match('/noresult/i',$AddIsp)) {  
096            $AddIsp = 'None';  
097        }  
098        else {  
099            $Sta = stripos($AddIsp,$IP) + strlen($IP) + strlen('来自');  
100            $Len = stripos($AddIsp,'"}')-$Sta;  
101            $AddIsp = substr($AddIsp,$Sta,$Len);  
102        }  
103        $AddIsp = explode(' ',$AddIsp);  
104        return $AddIsp;  
105    }  
106    function GetAdd() {  
107        $Add = $this->GetAddIsp();  
108        return $Add[0];  
109    }  
110    function GetIsp() {  
111        $Isp = $this->GetAddIsp();  
112        if ($Isp[0] != 'None' && isset($Isp[1])) {  
113            $Isp = $Isp[1];  
114        }  
115        else {  
116            $Isp = 'None';  
117        }  
118        return $Isp;  
119    }  
120}  
121?>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值