PHP判断是否为手机端或PC端
PHP判断用户访问网站的设备是手机端或PC端有很多种的方法,以给用户展示不同的内容。今天就写写几个平时收集过来的函数,大家自己测试吧。
PHP通过用户浏览器的User-Agent来判断访问设备的类型
示例代码:
<?php
function is_mobile() {
if (empty($_SERVER['HTTP_USER_AGENT'])) {
$is_mobile = false;
} elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mobi') !== false ) {
$is_mobile = true;
}else{
$is_mobile = false;
}
return $is_mobile;
}
?>
调用方法:
<?php
if(is_mobile){
//手机端代码
}else{
//PC端代码
}
?>
以上自定义函数是PHP通过获取用户浏览器User-Agent方法来判断是手机端还是PC端的,但精确度不是很高。比如有些手机的浏览器可以改变浏览器的标识来绕过上面的判断逻辑。
$_SERVER['HTTP_X_WAP_PROFILE']
手机端的UA信息收集可以利用X-WAP-PROFILE,它里面包含屏幕的大小,屏幕显示字符个数,厂家、版本、浏览器型号等。
如果是移动设备,肯定会有‘HTTP_X_WAP_PROFILE’这个标识的,所以我们可以利用PHP来判断是否存在$_SERVER['HTTP_X_WAP_PROFILE']来确认用户的访问设备类型
示例代码
<?php
if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
return true;
}
?>
$_SERVER['HTTP_VIA']
HTTP_VIA:列出从客户端到服务器端或者相反方向的响应经过了哪些代理服务器,他们用什么协议发送的请求。当客户端请求到达第一个代理服务器时,该服务器会在自己发出的请求里面添加 Via 头部,并填上自己的相关信息,当下一个代理服务器 收到第一个代理服务器的请求时,会在自己发出的请求里面复制前一个代理服务器的请求的Via头部,并把自己的相关信息加到后面。以此类推,当终端服务器收到最后一个代理服务器的请求时,检查 Via 头部。就知道该请求所经过的路由。
我们可以利用获取HTTP_VIA方式来并检查里面是否含有“wap”字段的形式来判断是否为手机端
代码示例:
<?php
if(isset($_SERVER['HTTP_VIA'])){
return stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false;
}
?>
注意:如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
扩展:
如果你想让判断的精度更高一些,可以把以上的实例代码组合起来使用
比如:
<?php
function ismobile(){
if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
return true;
}
if(isset($_SERVER['HTTP_VIA'])){
if($_SERVER['HTTP_VIA'], 'wap')){
return true;
}
}
//is_mobile() 为第一个示例的函数
if(is_mobile()){
return true;
}
return false;
}
?>
调用方式:
<?php
if(ismobile()){
//手机端
}else{
//PC端
}
?>