php判断手机段登录,以及phpcms手机PC双模板调用

Posted 神笔码农

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php判断手机段登录,以及phpcms手机PC双模板调用相关的知识,希望对你有一定的参考价值。

首先一段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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
function isMobile()
{
    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
    if (isset ($_SERVER[\'HTTP_X_WAP_PROFILE\']))
    {
        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;
}

phpcms 模板文件中创建两个模板:

其中 content中的文件是PC端模板,content_m中的文件是手机端模板。

其次在pgpcms中 编辑 phpcms/modules/content/index.php

讲以上php代码 放到index的class类中。

找到所有的:

1
include template(\'content\',$template);

替换为:

1
2
3
4
if($this->isMobile()){
    include template(\'content_m\',$template);
}else{
    include template(\'content\',$template);

 最后将:

1
include template(\'content\',\'index\',$default_style);

 替换为:

1
2
3
4
5
if($this->isMobile()){
    include template(\'content_m\',\'index\',$default_style);
}else{
    include template(\'content\',\'index\',$default_style);
}

  

到现在为止基本上就设置好了当运行phpcms中的index.php文件是,会根据是否为手机端调用不同的模板,实现了手机端和PC端数据库的同步。

 

转发自http://www.cnblogs.com/cyrfr/p/7194152.html

以上是关于php判断手机段登录,以及phpcms手机PC双模板调用的主要内容,如果未能解决你的问题,请参考以下文章

php判断手机段登录,以及phpcms手机PC双模板调用

你好,phpcms同一个网站有PC跟手机两个模板怎么设置访问同一个域名!

PHPCMS手机插件把手机跟PC一样静态的办法

phpcms 手机门户配置注意事项

PHPCMS如何开启手机站点

Phpcms V9手机门户设置教程:怎么用PC V9做手机网站