PHP获取客户端的IP、地理信息、浏览器、本地真实IP
<?php
header("Content-type:text/html;charset=utf-8");
// 作用获取客户端的ip、地理信息、浏览器、本地真实IP
class get_gust_info { 
    //获得访客浏览器类型
    function GetBrowser(){
        if(!empty($_SERVER['HTTP_USER_AGENT'])) {
            $br = $_SERVER['HTTP_USER_AGENT'];
            if (preg_match('/MSIE/i',$br)) {
                $br = 'MSIE';
            }elseif (preg_match('/Firefox/i',$br)) {
                $br = 'Firefox';
            }elseif (preg_match('/Chrome/i',$br)) {
                $br = 'Chrome';
            }elseif (preg_match('/Safari/i',$br)) {
                $br = 'Safari';
            }elseif (preg_match('/Opera/i',$br)) {
                $br = 'Opera';
            }elseif (preg_match('/QQBrowser/i',$br)) {
                $br = 'QQBrowser';
            }elseif (preg_match('/UCBrowser/i',$br)) {
                $br = 'UCBrowser';
            }else {
                $br = 'Other';
            }
            return $br;
        }else {
            return false;
        }
    }
    //获得访客浏览器语言
    function GetLang() {
        if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
            $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
            $lang = substr($lang,0,5);
            if(preg_match("/zh-cn/i",$lang)) {
                $lang = "简体中文";
            }elseif(preg_match("/zh/i",$lang)) {
                $lang = "繁体中文";
            }else{
                $lang = "English";
            }
            return $lang;
        }else {
            return false;
        }
    }
    //获取访客操作系统
    function GetOs(){
        if(!empty($_SERVER['HTTP_USER_AGENT'])) {
            $OS = $_SERVER['HTTP_USER_AGENT'];
            if (strpos($OS, 'Android') !== false) {//strpos()定位出第一次出现字符串的位置,这里定位为0
                preg_match("/(?<=Android )[\d\.]{1,}/", $OS, $version);
                $OS ='Android '.$version[0];
            }elseif (strpos($OS, 'iPhone') !== false) {
                preg_match("/(?<=CPU iPhone OS )[\d\_]{1,}/", $OS, $version);
                $OS = 'iPhone iOS '.str_replace('_', '.', $version[0]);
            }elseif (strpos($OS, 'iPad') !== false) {
                preg_match("/(?<=CPU OS )[\d\_]{1,}/", $OS, $version);
                $OS = 'iPad iOS '.str_replace('_', '.', $version[0]);
            }elseif (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;
        }else {
            return false;
        }
    }
    //获得访客真实ip
    function Getip() {
        $ip = false;
        if (getenv("HTTP_CLIENT_IP")) {
            $ip = getenv("HTTP_CLIENT_IP");
        }elseif (getenv("HTTP_X_FORWARDED_FOR")) {
            $ip = getenv("HTTP_X_FORWARDED_FOR");
        }elseif (getenv("REMOTE_ADDR")) {
            $ip = getenv("REMOTE_ADDR");
        }
        return $ip;
    }
    //根据ip获得访客所在地地名
    function Getaddress($ip='') {
        if(empty($ip)) {
            $ip = $this->Getip();
        }
        $ipadd = file_get_contents("http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=".$ip);//根据新浪api接口获取
        if($ipadd) {
            $charset = iconv("gbk","utf-8",$ipadd);
            preg_match_all("/[\x{4e00}-\x{9fa5}]+/u",$charset,$ipadds);
            return $ipadds;   //返回一个二维数组
        }else {
            return "address is none";
        }
    }
}
$gifo = new get_gust_info();
echo "浏览器类型:".$gifo->GetBrowser().'<br>';
echo "浏览器语言:".$gifo->GetLang().'<br>';
echo "操作系统:".$gifo->GetOs().'<br>';
echo "你的ip:".$gifo->getIP().'<br>';
echo "所在地:";
$address = $gifo->Getaddress($gifo->getIP());
foreach ($address[0] as $key) {
    echo $key.' ';
}
?>
PHP获取客户端的IP、地理信息、浏览器、本地真实IP的更多相关文章
- php 获取客户端的ip、地理信息、浏览器信息、本地真实ip
		
转自:http://www.blhere.com/948.html 这是非常实用的php常用类.获取客户端的ip.地理信息.浏览器信息.本地真实ip 1234567891011121314151617 ...
 - PHP利用纯真IP数据库在本地实现IP地址信息查询
		
https://blog.csdn.net/myweishanli/article/details/45098693 准备工作: 建议本地IP地址数据库,请到http://www.cz88.net/这 ...
 - .NET 获取客户端的操作系统版本、浏览器版本和IP地址
		
我们在使用.NET做网站的时候,很多情况下需要需要知道客户端的操作系统版本和浏览器版本,怎样获取客户端的操作系统和浏览器版本呢?我们可以通过分析UserAgent来获取. .NET 获取客户端的操作系 ...
 - PHP获取客户端操作系统,浏览器,语言,IP,IP归属地等
		
<?php class Client { ////获得访客浏览器类型 function Get_Browser(){ if(!empty($_SERVER['HTTP_USER_AGENT']) ...
 - asp.net获取客户端IP方法(转载)
		
最近web获取客户端ip,看到下面这篇文章,转载过来,一起分享(转载地址:http://www.cnblogs.com/yejun/archive/2008/02/26/1082485.html) 通 ...
 - 再论 ASP.NET 中获取客户端IP地址
		
说到IP获取无非是我们常见的以下几种方式,但是具体获取的值具体区别在哪?网上不乏相关文章,说的也是很详细,但是真正使用起来,还有很多不太对的地方.IP在不同系统中,应用相当广泛,常见的日志记录.广告分 ...
 - java nginx等代理或网关转发请求后获取客户端的ip地址,原理
		
在没有网关或者反向代理软件情况下,java里获取客户端ip地址的方法是request.getRemoteAddr() 先解释下http协议和TCP协议: 网页默认是进行http连接了,http协议即超 ...
 - C#获取客户端IP地址
		
客户端ip:Request.ServerVariables.Get("Remote_Addr").ToString();客户端主机名:Request.ServerVariables ...
 - 【整理】PHP获取客户端真实IP地址详解
		
php获取客户端IP地址有四种方法,这五种方法分别为REMOTE_ADDR.HTTP_CLIENT_IP.HTTP_X_FORWARDED_FOR.HTTP_VIA. REMOTE_ADDR 是你的客 ...
 
随机推荐
- Android DB那些事-数据库加密
			
说到数据库加密,目前最好且唯一的方案就是SqlCipher对sqlite3整体加密,微信也用的它.开源,且支持很多平台. 单就Android来说,集成不算太麻烦,1个jar包,3个so库,1个zip. ...
 - pahlcon:cookies设置
			
非加密方式(简单,但不推荐) 步骤 1 在全局容器中加入Cookie: $di->set('cookies', function () { $cookies = new \Phalcon\Htt ...
 - Android ---------高德卫星地图绘制多个点和点的点击事件自定义弹窗
			
最近开发中,遇到一个多个点绘制,并实现点击事件,出现自定义窗口显示相关信息等功能,所以写了这篇博客. 从后台请求数据,得到多个经纬度,然后绘制在地图上,并实现点击,出现相关信息(自定义弹框实现) 先来 ...
 - Nginx安装和使用
			
Nginx简介 nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态.静态页面的分离,可以按照轮询.ip哈希.URL哈希.权重等多种方式对后 ...
 - 阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章,结合《XXX重大技术需求征集系统》,列举实例分析采用的可用性和可修改性战术,将上述内容撰写成一篇1500字左右的博客阐述你的观点。
			
这三章主要讲述的是网站的可用性.伸缩性和可扩展性. 首先,网站的可用性描述网站可有效访问的特性,相比于网站的其他非功能特性,网站的可用性更容易引起人们的注意,尤其是大型网站的可用性,如果大公司的网站出 ...
 - Hadoop出现 Wrong FS: hdfs://......错误的解决方法
			
今天在hadoop项目中出现以下报错:java.lang.IllegalArgumentException: Wrong FS: hdfs://......,expected: file:///... ...
 - 【Wannafly挑战赛9-A】找一找
			
链接:https://www.nowcoder.net/acm/contest/71/A 题目描述 给定n个正整数,请找出其中有多少个数x满足:在这n个数中存在数y=kx,其中k为大于1的整数 输入描 ...
 - bzip2压缩 解压缩
			
压缩/解压缩压缩/解压缩之后的文件名称 必须是bz2 首先是 -z 压缩文件-d 解压缩!
 - LeetCode OJ:Power of Two(2的幂)
			
Given an integer, write a function to determine if it is a power of two. 看一个数是不是2的幂,代码如下: class Solu ...
 - Flask数据库常见关系模板代码
			
常见关系模板代码 以下罗列了使用关系型数据库中常见关系定义模板代码 一对多 示例场景: 用户与其发布的帖子(用户表与帖子表) 角色与所属于该角色的用户(角色表与多用户表) 示例代码 class Rol ...