thinkphp如何根据设备访问不同模板

来源:undefined 2024-12-29 00:47:01 0

thinkphp根据设备访问不同模板的方法:1、把“function isMobile(){...}”放在“appcommon.php”公共方法中;2、在index模块下的公共方法内设置前置操作;3、判断为true则执行“mobile/index”方法,否则执行另一个pc端的控制器操作即可。

thinkphp5判断移动或pc端访问并调用不同模板

把下面的代码放在appcommon.php公共方法那里。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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) &amp;&amp; (strpos($_SERVER[‘HTTP_ACCEPT’], ‘textml’) === false || (strpos($_SERVER[‘HTTP_ACCEPT’], ‘vnd.wap.wml’) <p>再在index模块下的公共方法内设置前置操作,如果判断为true则执行mobile/index方法(移动端的控制器),否则则执行另一个pc端的控制器操作</p><pre class="brush:php;toolbar:false">public function _initialize(){

if(isMobile()){

$this-&gt;redirect(‘mobile/index’);

}

}

登录后复制

方法2

立即学习PHP免费学习笔记(深入)”;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

// 应用公共文件

//判断客户端访问方式

function ismobile() {

// 如果有HTTP_X_WAP_PROFILE则一定是移动设备

if (isset ($_SERVER[‘HTTP_X_WAP_PROFILE’]))

return true;

//此条摘自TPM智能切换模板引擎,适合TPM开发

if(isset ($_SERVER[‘HTTP_CLIENT’]) &amp;&amp;’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) &amp;&amp; (strpos($_SERVER[‘HTTP_ACCEPT’], ‘text/html’) === false || (strpos($_SERVER[‘HTTP_ACCEPT’], ‘vnd.wap.wml’) <script type="text/javascript" src="https://sw.yisu.com/hezuo/43cc2463da342d2af2696436bd2d05f4.html?bottom"></script>

登录后复制

以上就是thinkphp如何根据设备访问不同模板的详细内容,更多请关注php中文网其它相关文章!

最新文章