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