获取ip,获取客户端浏览器,获取客户端访问操作系统,获取客户端访问设备
/**
* 获取ip
*/
public static function getIp()
{
if (getenv('HTTP_CLIENT_IP')) {
$ip = getenv('HTTP_CLIENT_IP');
} else if (getenv('HTTP_X_FORWARDED_FOR')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} else if (getenv('REMOTE_ADDR')) {
$ip = getenv('REMOTE_ADDR');
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$ips = explode(',', $ip);
if (count($ips) > 1) {
$ip = $ips[0];
}
return $ip;
}
/**
* 获取客户端浏览器
*/
public static function getBrowse()
{
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
} else {
$userAgent = 'unknown';
}
$browser = 'other';
if (preg_match('/MSIE/i', $userAgent)) {
$browser = 'ie';
} else if (preg_match('/Firefox/i', $userAgent)) {
$browser = 'Firefox';
} else if (preg_match('/Chrome/i', $userAgent)) {
$browser = 'chrome';
} else if (preg_match('/Safari/i', $userAgent)) {
$browser = 'safari';
} else if (preg_match('/Opera/i', $userAgent)) {
$browser = 'opera';
}
return $browser;
}
/**
* 获取客户端访问操作系统
*/
public static function getOs()
{
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
} else {
$userAgent = 'unknown';
} $os = 'web';
if (preg_match('/iphone/i', $userAgent)) {
$os = 'iphone';
} else if (preg_match('/android/i', $userAgent)) {
$os = 'android';
} else if (preg_match('/ipad/i', $userAgent)) {
$os = 'ipad';
} else if (preg_match('/win/i', $userAgent)) {
$os = 'windows';
} else if (preg_match('/mac/i', $userAgent)) {
$os = 'mac';
} else if (preg_match('/linux/i', $userAgent)) {
$os = 'linux';
} else if (preg_match('/unix/i', $userAgent)) {
$os = 'unix';
} else if (preg_match('/bsd/i', $userAgent)) {
$os = 'bsd';
}
return $os;
} /**
* 获取客户端访问设备
*/
public static function getDevice()
{
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
} else {
$userAgent = 'unknown';
}
$device = 'pc';
if (preg_match('/iphone/i', $userAgent)) {
$device = 'phone';
} else if (preg_match('/android/i', $userAgent)) {
$device = 'phone';
} else if (preg_match('/ipad/i', $userAgent)) {
$device = 'pad';
} else if (preg_match('/win/i', $userAgent)) {
$device = 'pc';
} else if (preg_match('/mac/i', $userAgent)) {
$device = 'pc';
} else if (preg_match('/linux/i', $userAgent)) {
$device = 'pc';
} else if (preg_match('/unix/i', $userAgent)) {
$device = 'pc';
} else if (preg_match('/bsd/i', $userAgent)) {
$device = 'pc';
}
return $device;
}
获取ip,获取客户端浏览器,获取客户端访问操作系统,获取客户端访问设备的更多相关文章
- 8021x 获取IP信息失败,请检查锐捷认证客户端当前配置是否符合所在网络的要求,检查完毕后尝试重新认证
早上一起床,登陆锐捷客户端上网,谁知道错问题了.不能联网了,锐捷登陆成功,但是一会儿就提示失败,获取IP信息失败了.下面我描述一下问题原因: 锐捷登陆后有认证提示,和往常正常情况一样的,不过有个小感叹 ...
- userAgent,JS这么屌的用户代理,你造吗?——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统
1.识别浏览器呈现引擎 为了不在全局作用域中添加多余变量,这里使用单例模式(什么是单例模式?)来封装检测脚本.检测脚本的基本代码如下所示: var client = function() { var ...
- ThinkPHP---TP拓展之获取IP信息
[概论] (1)简述 在所有网站里,特别是用户管理系统,都喜欢记录用户访问的IP地址.对后期的业务开展有很大的意义,可以通过IP地址的记录访问出国内或全球范围内,哪一块用户比较多. 在后期做产品时,可 ...
- js获取IP地址方法总结_转
js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址 ...
- js获取IP地址多种方法实例教程
js获取IP地址方法总结 js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338. ...
- js获取IP地址方法总结
js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址 ...
- 使用C#获取IP地址方法
C#中如何获取IP地址?,看到问题的时候我也很纠结,纠结的不是这个问题是如何的难回答,而是纠结的是这些问题都是比较基本的常识,也是大家会经常用到的.但是却不断的有人问起,追根究底的原因估计就是没有好好 ...
- 手把手教你用Java获取IP归属地
前几个月微信公众号上线了IP归属地的功能,后续知乎.抖音等平台纷纷添加了该功能.如果是国内的用户精确到省份,国外用户精确到国家.本文就使用Java实现获取IP归属地. ! 主要讲解几个步骤: Java ...
- .NET获取客户端的操作系统、IP地址、浏览器版本
获取客户端的操作系统: #region 获取操作系统版本号 /// <summary> /// 获取操作系统版本号 /// </summary> /// <returns ...
随机推荐
- SpringBoot java.lang.IllegalArgumentException: Request header is too large
在application.properties##tomcat 请求设置server.max-http-header-size=1048576server.tomcat.max-connections ...
- Elasticsearch 搜索模块之Cross Cluster Search(跨集群搜索)
Cross Cluster Search简介 cross-cluster search功能允许任何节点作为跨多个群集的federated client(联合客户端),与tribe node不同的是cr ...
- 关于fullpage.js 和animate.css制作全屏简单大方的首页
附上源码: html <!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- 实验long raw 和 blob两种数据类型遇到dblink的表现
首先long raw从Oracle 10g开始就不再被建议使用,建议用blob代替.同理,long建议用clob代替. 本文从运维角度实验long raw 和 blob两种数据类型在遇到dblink时 ...
- node.js初识06
node中的fs文件系统 var http = require("http"); var fs = require("fs"); var server = ht ...
- 编写一个程序解决选择问题。令k=N/2。
import java.util.Arrays; /** * 选择问题,确定N个数中第K个最大值 * @author wulei * 将前k个数读进一个数组,冒泡排序(递减),再将剩下的元素逐个读入, ...
- HTML-CSS线性渐变
实现背景的渐变可以通过为背景添加颜色渐变的图片,也可以使用浏览器的功能来为背景添加渐变的颜色 在IE6或IE7浏览器下可以使用一下示例的CSS语句,设置filter属性来实现颜色 filter:pro ...
- jQuery-手风琴伸缩效果
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 软工网络15团队作业4——Alpha阶段敏捷冲刺5.0
1.每天举行站立式会议,提供当天站立式会议照片一张. 2.项目每个成员的昨天进展.存在问题.今天安排. 成员 昨天已完成 今天计划完成 郭炜埕 完善新建话题界面 实现前端各界面的跳转连接 郑晓丽 进行 ...
- sitecore系统教程之部署架构方式分析
当您第一次部署Sitecore体验平台时,您可以选择三种主要体系结构选项: 内部部署服务器解决方案 混合服务器方案 云服务器解决方案 您是选择将Sitecore作为云,内部部署还是混合解决方案运行,取 ...