获取ip,获取客户端浏览器,获取客户端访问操作系统,获取客户端访问设备
2023-09-10 19:46:38
/**
* 获取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;
}
最新文章
- 异常处理汇总 ~ 修正果带着你的Net飞奔吧!
- codevs 1228 苹果树 树链剖分讲解
- sql事务(Transaction)用法介绍及回滚实例
- javaweb框架构想-自己的对象存储池-遁地龙卷风
- 文件代码对比软件 Beyond Compare
- shell 循环
- scala高级内容(二) - Implicit
- 【BZOJ】【3757】苹果树
- 在iOS应用程序中打开设备设置界面及其中某指定的选项界面
- Java-WebSocket
- fmt命令
- (转)DevExpress GridView属性设置
- C ";right-left"; 从左到右
- java.util.Date 与 java.sql.Date 之间的转换
- mybatis的时间比较 xml 及不解析<;=的写法
- JVM,Tomcat与OSGi类加载机制比较
- DomeOS部署
- Nginx Epoll事件模型优劣
- IntelliJ IDEA(九) :插件(转)
- java.——最大子序列和(前提是:全部都是非负数)
热门文章
- js 对象的_proto_属性 和函数的prototype属性分析
- golang配置
- js简易计算器底层运算逻辑(带撤销功能)
- vmware 12
- IntelliJ Idea Java 使用
- Kotlin Linux下的环境搭建
- vue路由(一个包含重定向、嵌套路由、懒加载的main.js如下)and 路由跳转传参的query和params的异同
- (转)Xcode导航快捷键(大全)
- HttpContext.Current.Items的用途
- python文件基础IO,OS