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’])) {
if ((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温度【技巧】  如何自定义建站之星网站的导航菜单样式?