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 ...