thinkphp如何根据设备访问不同模板
发布时间 - 2023-06-03 00:00:00 点击率:次
thinkphp根据设备访问不同模板的方法:1、把“function isMobile(){...}”放在“app\common.php”公共方法中;2、在index模块下的公共方法内设置前置操作;3、判断为true则执行“mobile/index”方法,否则执行另一个pc端的控制器操作即可。
thinkphp5判断移动或pc端访问并调用不同模板
把下面的代码放在app\common.php公共方法那里。
function isMobile()
{
if (isset($_SERVER[‘HTTP_X_WAP_PROFILE’])) {
return true;
}
if (isset($_SERVER[‘HTTP_VIA’])) {
return stristr($_SERVER[‘HTTP_VIA’], “wap”) ? true : false;
}
if (isset($_SERVER[‘HTTP_USER_AGENT’])) {
$clientkeywords = 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’);
if (preg_match(“/(” . implode(‘|’, $clientkeywords) . “)/i”, strtolower($_SERVER[‘HTTP_USER_AGENT’]))) {
return true;
}
}
if (isset($_SERVER[‘HTTP_ACCEPT’])) {
i
f ((strpos($_SERVER[‘HTTP_ACCEPT’], ‘vnd.wap.wml’) !== false) && (strpos($_SERVER[‘HTTP_ACCEPT’], ‘textml’) === false || (strpos($_SERVER[‘HTTP_ACCEPT’], ‘vnd.wap.wml’) < strpos($_SERVER[‘HTTP_ACCEPT’], ‘textml’)))) {
return true;
}
}
return false;
}再在index模块下的公共方法内设置前置操作,如果判断为true则执行mobile/index方法(移动端的控制器),否则则执行另一个pc端的控制器操作
public function _initialize(){
if(isMobile()){
$this->redirect(‘mobile/index’);
}
}方法2
把方法放在app/common。php文件夹里面
// 应用公共文件
//判断客户端访问方式
function ismobile() {
// 如果有HTTP_X_WAP_PROFILE则一定是移动设备
if (isset ($_SERVER[‘HTTP_X_WAP_PROFILE’]))
return true;
//此条摘自TPM智能切换模板引擎,适合TPM开发
if(isset ($_SERVER[‘HTTP_CLIENT’]) &&’PhoneClient’==$_SERVER[‘HTTP_CLIENT’])
return true;
//如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
if (isset ($_SERVER[‘HTTP_VIA’]))
//找不到为flase,否则为true
return stristr($_SERVER[‘HTTP_VIA’], ‘wap’) ? true : false;
//判断手机发送的客户端标志,兼容性有待提高
if (isset ($_SERVER[‘HTTP_USER_AGENT’])) {
$clientkeywords = 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’
);
//从HTTP_USER_AGENT中查找手机浏览器的关键字
if (preg_match(“/(” . implode(‘|’, $clientkeywords) . “)/i”, strtolower($_SERVER[‘HTTP_USER_AGENT’]))) {
return true;
}
}
//协议法,因为有可能不准确,放到最后判断
if (isset ($_SERVER[‘HTTP_ACCEPT’])) {
// 如果只支持wml并且不支持html那一定是移动设备
// 如果支持wml和html但是wml在html之前则是移动设备
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;
}
# thinkphp
# 放在
# 客户端
# 有可能
# 则是
# 找不到
# 不支持
# 那一
# 则为
# 不准确
# htc
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
教你用AI润色文章,让你的文字表达更专业
高防服务器租用首荐平台,企业级优惠套餐快速部署
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
原生JS实现图片轮播切换效果
js实现获取鼠标当前的位置
如何用好域名打造高点击率的自主建站?
Laravel如何使用Collections进行数据处理?(实用方法示例)
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
香港网站服务器数量如何影响SEO优化效果?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
如何确认建站备案号应放置的具体位置?
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Laravel怎么使用artisan命令缓存配置和视图
微信小程序 input输入框控件详解及实例(多种示例)
详解jQuery中的事件
Laravel如何使用Livewire构建动态组件?(入门代码)
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
Laravel API资源类怎么用_Laravel API Resource数据转换
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
Laravel如何与Inertia.js和Vue/React构建现代单页应用
*服务器网站为何频现安全漏洞?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
Laravel如何与Pusher实现实时通信?(WebSocket示例)
如何在自有机房高效搭建专业网站?
详解MySQL数据库的安装与密码配置
如何在建站宝盒中设置产品搜索功能?
Linux网络带宽限制_tc配置实践解析【教程】
想要更高端的建设网站,这些原则一定要坚持!
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
Swift中循环语句中的转移语句 break 和 continue
怎样使用JSON进行数据交换_它有什么限制
网站制作大概多少钱一个,做一个平台网站大概多少钱?
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
如何在Windows服务器上快速搭建网站?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
如何自定义建站之星网站的导航菜单样式?


f ((strpos($_SERVER[‘HTTP_ACCEPT’], ‘vnd.wap.wml’) !== false) && (strpos($_SERVER[‘HTTP_ACCEPT’], ‘textml’) === false || (strpos($_SERVER[‘HTTP_ACCEPT’], ‘vnd.wap.wml’) < strpos($_SERVER[‘HTTP_ACCEPT’], ‘textml’)))) {
return true;
}
}
return false;
}