php取得客户端信息类

简介:
Java代码   收藏代码
  1. <?php     
  2. /**   
  3.  * 获取访客信息的类:语言、浏览器、操作系统、IP、地理位置、ISP。   
  4.  * 日期:2011-09-13   
  5.  * 作者:www.itwhy.org   
  6.  * 使用:   
  7.       $obj = new class_guest_info;   
  8.       $obj->GetLang();        //获取访客语言:简体中文、繁體中文、English。   
  9.       $obj->GetBrowser();     //获取访客浏览器:MSIE、Firefox、Chrome、Safari、Opera、Other。   
  10.       $obj->GetOS();          //获取访客操作系统:Windows、MAC、Linux、Unix、BSD、Other。   
  11.       $obj->GetIP();          //获取访客IP地址。   
  12.       $obj->GetAdd();         //获取访客地理位置,使用 Baidu 隐藏接口。   
  13.       $obj->GetIsp();         //获取访客ISP,使用 Baidu 隐藏接口。   
  14.  */    
  15. class class_guest_info{     
  16.     function GetLang() {    
  17.         $Lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 04);     
  18.         //使用substr()截取字符串,从 0 位开始,截取4个字符     
  19.         if (preg_match('/zh-c/i',$Lang)) {     
  20.         //preg_match()正则表达式匹配函数     
  21.             $Lang = '简体中文';     
  22.         }     
  23.         elseif (preg_match('/zh/i',$Lang)) {     
  24.             $Lang = '繁體中文';     
  25.         }     
  26.         else {     
  27.             $Lang = 'English';     
  28.         }     
  29.         return $Lang;     
  30.     }     
  31.     function GetBrowser() {     
  32.         $Browser = $_SERVER['HTTP_USER_AGENT'];     
  33.         if (preg_match('/MSIE/i',$Browser)) {     
  34.             $Browser = 'MSIE';     
  35.         }     
  36.         elseif (preg_match('/Firefox/i',$Browser)) {     
  37.             $Browser = 'Firefox';     
  38.         }     
  39.         elseif (preg_match('/Chrome/i',$Browser)) {     
  40.             $Browser = 'Chrome';     
  41.         }     
  42.         elseif (preg_match('/Safari/i',$Browser)) {     
  43.             $Browser = 'Safari';     
  44.         }     
  45.         elseif (preg_match('/Opera/i',$Browser)) {     
  46.             $Browser = 'Opera';     
  47.         }     
  48.         else {     
  49.             $Browser = 'Other';     
  50.         }     
  51.         return $Browser;     
  52.     }     
  53.     function GetOS() {     
  54.         $OS = $_SERVER['HTTP_USER_AGENT'];     
  55.         if (preg_match('/win/i',$OS)) {     
  56.             $OS = 'Windows';     
  57.         }     
  58.         elseif (preg_match('/mac/i',$OS)) {     
  59.             $OS = 'MAC';     
  60.         }     
  61.         elseif (preg_match('/linux/i',$OS)) {     
  62.             $OS = 'Linux';     
  63.         }     
  64.         elseif (preg_match('/unix/i',$OS)) {     
  65.             $OS = 'Unix';     
  66.         }     
  67.         elseif (preg_match('/bsd/i',$OS)) {     
  68.             $OS = 'BSD';     
  69.         }     
  70.         else {     
  71.             $OS = 'Other';     
  72.         }     
  73.         return $OS;     
  74.     }     
  75.     function GetIP() {     
  76.         if (!empty($_SERVER['HTTP_CLIENT_IP'])) {     
  77.         //如果变量是非空或非零的值,则 empty()返回 FALSE。     
  78.             $IP = explode(',',$_SERVER['HTTP_CLIENT_IP']);     
  79.         }     
  80.         elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {     
  81.             $IP = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);     
  82.         }     
  83.         elseif (!empty($_SERVER['REMOTE_ADDR'])) {     
  84.             $IP = explode(',',$_SERVER['REMOTE_ADDR']);     
  85.         }     
  86.         else {     
  87.             $IP[0] = 'None';     
  88.         }     
  89.         return $IP[0];     
  90.     }     
  91.     private function GetAddIsp() {     
  92.         $IP = $this->GetIP();     
  93.         $AddIsp = mb_convert_encoding(file_get_contents('http://open.baidu.com/ipsearch/s?tn=ipjson&wd='.$IP),'UTF-8','GBK');     
  94.         //mb_convert_encoding() 转换字符编码。     
  95.         if (preg_match('/noresult/i',$AddIsp)) {     
  96.             $AddIsp = 'None';     
  97.         }     
  98.         else {     
  99.             $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. ?>    
相关文章
|
2月前
|
Java 程序员 PHP
PHP对象和类
PHP对象和类
22 0
|
9月前
|
运维 监控 应用服务中间件
【运维知识进阶篇】zabbix5.0稳定版详解3(监控Nginx+PHP服务状态信息)(二)
【运维知识进阶篇】zabbix5.0稳定版详解3(监控Nginx+PHP服务状态信息)(二)
153 0
|
7天前
|
存储 监控 安全
PHP医院安全(不良)事件报告系统源码 vue2+element支持11大类不良事件上报、审核处理、分析改进
医院安全(不良)事件管理系统采用无责的、自愿的填报不良事件方式,有效地减轻医护人员的思想压力,实现以事件为主要对象,可以自动、及时、实际地反应医院的安全、不良、近失事件的情况,更好地掌握不良事件的发生趋势,为及时采取适当的管理措施和流程、制度改进提供了良好的量化依据。系统通过汇集不同类型事件的报告,从中分析出医院内部潜在的问题和风险,将发生的事故降到最低,从而保证病人安全和医护人员安全。
20 0
php案例:加限定条件(只找某个路径下自己所需要的文件类型的信息)
php案例:加限定条件(只找某个路径下自己所需要的文件类型的信息)
php案例:加限定条件(只找某个路径下自己所需要的文件类型的信息)
|
5月前
|
安全 前端开发 关系型数据库
【PHP】麻醉临床信息系统
【PHP】麻醉临床信息系统
29 0
|
9月前
|
XML 移动开发 Shell
CTF中常用的php原生类总结
CTF中常用的php原生类总结
130 0
|
9月前
|
运维 监控 PHP
【运维知识进阶篇】zabbix5.0稳定版详解3(监控Nginx+PHP服务状态信息)(三)
【运维知识进阶篇】zabbix5.0稳定版详解3(监控Nginx+PHP服务状态信息)(三)
72 0
|
9月前
|
运维 监控 应用服务中间件
【运维知识进阶篇】zabbix5.0稳定版详解3(监控Nginx+PHP服务状态信息)(一)
【运维知识进阶篇】zabbix5.0稳定版详解3(监控Nginx+PHP服务状态信息)
142 0