js、php判断手机PC
2024-09-04 08:22:46
用于phpcms
<script type="text/javascript">
var url = window.location.href;
if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
if(url.slice(-7)!='_m.html'){
if(url.slice(-5)=='.html'){
window.location.href = url.slice(0,url.length-5)+'_m.html';
}else{
window.location.href = url+'index_m.html';
}
} }else{
if(url.slice(-7)=='_m.html'){
window.location.href = url.slice(0,url.length-7)+'.html';
}
}
</script>
public 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;
}
最新文章
- CorelDRAW X8 如何破解激活(附国际版安装包+激活工具) 2016-12-15
- WPF 画心2.0版之元旦快乐
- easyUI 中datagrid 返回列隐藏方法
- Programming Entity Framework 翻译
- HTML5实现下载文件且指定下载文件名
- [Leetcode][JAVA] Pascal&#39;s Triangle I, II
- VS问题汇总——竹子整理
- EasyUI组合树插件
- Javascript this 解析
- uc/os 任务删除
- js校验
- c++网络通信(与服务器通信聊天)和c#网络通信
- jenkins 配置安全邮件
- Angular4中使用后台去数据,Swiper不能滑动的解决方法(一)
- Linux日志出现大量";kernel: NET: Registered protocol family 36";
- Cisco ASR1002-X告警处理
- 【CSS-flex】圣杯布局(Holy Grail Layout)、输入框的布局、悬挂式布局、固定的底栏
- What is Double Spending &; How Does Bitcoin Handle It?
- 高通平台下安卓opencl小例子
- Bell数和Stirling数