php如何获取访问者地理位置,PHP获取访客IP和地理位置等信息的类

/**

* 获取访客信息的类:语言、浏览器、操作系统、IP、地理位置、ISP。

* 日期:2011-09-13

* 作者:www.itwhy.org

* 使用:

* $obj = new class_guest_info;

* $obj->GetLang(); //获取访客语言:简体中文、繁體中文、English。

* $obj->GetBrowser(); //获取访客浏览器:MSIE、Firefox、Chrome、Safari、Opera、Other。

* $obj->GetOS(); //获取访客操作系统:Windows、MAC、Linux、Unix、BSD、Other。

* $obj->GetIP(); //获取访客IP地址。

* $obj->GetAdd(); //获取访客地理位置,使用 Baidu 隐藏接口。

* $obj->GetIsp(); //获取访客ISP,使用 Baidu 隐藏接口。

*/

class class_guest_info{

function GetLang() {

$Lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4);

//使用substr()截取字符串,从 0 位开始,截取4个字符

if (preg_match('/zh-c/i',$Lang)) {

//preg_match()正则表达式匹配函数

$Lang = '简体中文';

}

elseif (preg_match('/zh/i',$Lang)) {

$Lang = '繁體中文';

}

else {

$Lang = 'English';

}

return $Lang;

}

function GetBrowser() {

$Browser = $_SERVER['HTTP_USER_AGENT'];

if (preg_match('/MSIE/i',$Browser)) {

$Browser = 'MSIE';

}

elseif (preg_match('/Firefox/i',$Browser)) {

$Browser = 'Firefox';

}

elseif (preg_match('/Chrome/i',$Browser)) {

$Browser = 'Chrome';

}

elseif (preg_match('/Safari/i',$Browser)) {

$Browser = 'Safari';

}

elseif (preg_match('/Opera/i',$Browser)) {

$Browser = 'Opera';

}

else {

$Browser = 'Other';

}

return $Browser;

}

function GetOS() {

$OS = $_SERVER['HTTP_USER_AGENT'];

if (preg_match('/win/i',$OS)) {

$OS = 'Windows';

}

elseif (preg_match('/mac/i',$OS)) {

$OS = 'MAC';

}

elseif (preg_match('/linux/i',$OS)) {

$OS = 'Linux';

}

elseif (preg_match('/unix/i',$OS)) {

$OS = 'Unix';

}

elseif (preg_match('/bsd/i',$OS)) {

$OS = 'BSD';

}

else {

$OS = 'Other';

}

return $OS;

}

function GetIP() {

if (!emptyempty($_SERVER['HTTP_CLIENT_IP'])) {

//如果变量是非空或非零的值,则 empty()返回 FALSE。

$IP = explode(',',$_SERVER['HTTP_CLIENT_IP']);

}

elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR'])) {

$IP = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);

}

elseif (!emptyempty($_SERVER['REMOTE_ADDR'])) {

$IP = explode(',',$_SERVER['REMOTE_ADDR']);

}

else {

$IP[0] = 'None';

}

return $IP[0];

}

private function GetAddIsp() {

$IP = $this->GetIP();

$AddIsp = mb_convert_encoding(file_get_contents('http://open.baidu.com/ipsearch/s?tn=ipjson&wd='.$IP),'UTF-8','GBK');

//mb_convert_encoding() 转换字符编码。

if (preg_match('/noresult/i',$AddIsp)) {

$AddIsp = 'None';

}

else {

$Sta = stripos($AddIsp,$IP) + strlen($IP) + strlen('来自');

$Len = stripos($AddIsp,'"}')-$Sta;

$AddIsp = substr($AddIsp,$Sta,$Len);

}

$AddIsp = explode(' ',$AddIsp);

return $AddIsp;

}

function GetAdd() {

$Add = $this->GetAddIsp();

return $Add[0];

}

function GetIsp() {

$Isp = $this->GetAddIsp();

if ($Isp[0] != 'None' && isset($Isp[1])) {

$Isp = $Isp[1];

}

else {

$Isp = 'None';

}

return $Isp;

}

}

?>

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值