/**
* 获取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,获取客户端浏览器,获取客户端访问操作系统,获取客户端访问设备的更多相关文章

  1. 8021x 获取IP信息失败,请检查锐捷认证客户端当前配置是否符合所在网络的要求,检查完毕后尝试重新认证

    早上一起床,登陆锐捷客户端上网,谁知道错问题了.不能联网了,锐捷登陆成功,但是一会儿就提示失败,获取IP信息失败了.下面我描述一下问题原因: 锐捷登陆后有认证提示,和往常正常情况一样的,不过有个小感叹 ...

  2. userAgent,JS这么屌的用户代理,你造吗?——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统

    1.识别浏览器呈现引擎 为了不在全局作用域中添加多余变量,这里使用单例模式(什么是单例模式?)来封装检测脚本.检测脚本的基本代码如下所示: var client = function() { var ...

  3. ThinkPHP---TP拓展之获取IP信息

    [概论] (1)简述 在所有网站里,特别是用户管理系统,都喜欢记录用户访问的IP地址.对后期的业务开展有很大的意义,可以通过IP地址的记录访问出国内或全球范围内,哪一块用户比较多. 在后期做产品时,可 ...

  4. js获取IP地址方法总结_转

    js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址 ...

  5. js获取IP地址多种方法实例教程

    js获取IP地址方法总结   js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338. ...

  6. js获取IP地址方法总结

    js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址 ...

  7. 使用C#获取IP地址方法

    C#中如何获取IP地址?,看到问题的时候我也很纠结,纠结的不是这个问题是如何的难回答,而是纠结的是这些问题都是比较基本的常识,也是大家会经常用到的.但是却不断的有人问起,追根究底的原因估计就是没有好好 ...

  8. 手把手教你用Java获取IP归属地

    前几个月微信公众号上线了IP归属地的功能,后续知乎.抖音等平台纷纷添加了该功能.如果是国内的用户精确到省份,国外用户精确到国家.本文就使用Java实现获取IP归属地. ! 主要讲解几个步骤: Java ...

  9. .NET获取客户端的操作系统、IP地址、浏览器版本

    获取客户端的操作系统: #region 获取操作系统版本号 /// <summary> /// 获取操作系统版本号 /// </summary> /// <returns ...

随机推荐

  1. Java中输出正则表达式匹配到的内容

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class A { public static void ...

  2. Python 全栈开发九 日志模块

    日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变量数据的消息来描述.此外,事件也有重要性的概念 ...

  3. Python Socket实现文件上传(TCP协议)

    在TCP协议下通过socket模块实现文件上传 #!/usr/bin/env python # -*- coding: utf-8 -*- # desc: tcp_server_file_upload ...

  4. linux iscsi挂载与卸载

    iscsiadm -m discovery -t sendtargets -p 192.168.4.245:3260 #扫描ISCSI Target 列出所有LUN iscsiadm -m node ...

  5. java串口通讯环境配置

    用java实现串口通信(windows系统下),配置如下: 1.comm.jar放置到 JAVA_HOME/jre/lib/ext;2.win32com.dll放置到 JAVA_HOME/bin;3. ...

  6. 【LeetCode每天一题】Search in Rotated Sorted Array(在旋转数组中搜索)

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., ...

  7. vue proxyTable 跨域问题。

  8. PLSQL的SQL%NOTFOUND的使用场景

    SELECT * INTO v_ticketStorageRow FROM BDM_TICKET_STORAGE WHERE p_startTicketNo >= START_NO_ AND p ...

  9. Laravel中路由怎么写(一)

    1.路由基本使用示例 1.1 默认示例 Laravel中所有路由定义在/app/Http/routes.php文件中,该文件默认定义了应用的首页路由: Route::get('/', function ...

  10. animation 老动画

    关于设置跳跃: using System.Collections; using System.Collections.Generic; using UnityEngine; public class ...