浮叶蓝空的博客
分享学习心得,记录学习笔记
文章:
84
访问:
526229
登录
关于
首页
今天是:
2025年09月10日 星期三
类别
PHP(39)
其他笔记(20)
Java(1)
C++(17)
mysql(2)
JavaScript(4)
近期文章
Linux下Cmake引用第三方静态库示例
Linux下使用Cmake构建静态库示例
Ubuntu设置自动挂载硬盘,挂载U盘
压力测试工具Apache JMeter基本使用
使用PHP脚本借助FFmpeg一键合并视频
Shell中的>、1>、2>、2>&1、&>详解
PHP开启多进程实现异步非阻塞并行执行任务
博主推荐
PHP实现文件下载接口
Qt读写注册表,C++读写注册表
PHP动态修改配置文件,存储为文件
MySql常用语法
Powershell远程连接
PHP从字符串中获取需要的内容部分
封装PHP的HTTP请求
PHP识别手机访问
fuyelk
2019年03月24日
1468
#### php实现通过手机浏览器的专属标识及http_user_agent识别是否是移动设备 ### 创建一个监测方法 ```php /** * 判断是否为移动设备 */ private function ismobile() { // 特殊标识 if (isset($_SERVER['HTTP_X_WAP_PROFILE']) || (isset ($_SERVER['HTTP_CLIENT']) && $_SERVER['HTTP_CLIENT'] == 'PhoneClient') || (isset ($_SERVER['HTTP_VIA']) && false !== strpos($_SERVER['HTTP_VIA'], 'wap'))) return true; // HTTP_USER_AGENT判断 if (!empty($_SERVER['HTTP_USER_AGENT'])) { $agents = array( 'nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile','xiaomi/miuibrows' ); if (preg_match("/(" . implode('|', $agents) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) { return true; } } //协议法,因为有可能不准确,放到最后判断 if (isset ($_SERVER['HTTP_ACCEPT'])) { if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { return true; } } return false; } ``` ### 在基类构造函数中调用检查,并处理(可优化为调转到对应目录) ```php if($this->ismobile()){ // 路径不是mobile的路径则重定向到mobile站点上 if (empty(explode('/', $this->request->url())[1]) || 'mobile' != explode('/', $this->request->url())[1]){ $this->redirect('/mobile'); exit; } } ```
上一篇:
Thinkphp路由遇到的问题
下一篇:
json_encode将中文转义的问题
0人点赞
登录后评论
友情链接
doywb
2018-2025 Copyright© 米灵尔 浮叶蓝空
豫ICP备15007436号-1
豫公网安备 41152302000146号