用于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;
}

最新文章

  1. CorelDRAW X8 如何破解激活(附国际版安装包+激活工具) 2016-12-15
  2. WPF 画心2.0版之元旦快乐
  3. easyUI 中datagrid 返回列隐藏方法
  4. Programming Entity Framework 翻译
  5. HTML5实现下载文件且指定下载文件名
  6. [Leetcode][JAVA] Pascal&#39;s Triangle I, II
  7. VS问题汇总——竹子整理
  8. EasyUI组合树插件
  9. Javascript this 解析
  10. uc/os 任务删除
  11. js校验
  12. c++网络通信(与服务器通信聊天)和c#网络通信
  13. jenkins 配置安全邮件
  14. Angular4中使用后台去数据,Swiper不能滑动的解决方法(一)
  15. Linux日志出现大量&quot;kernel: NET: Registered protocol family 36&quot;
  16. Cisco ASR1002-X告警处理
  17. 【CSS-flex】圣杯布局(Holy Grail Layout)、输入框的布局、悬挂式布局、固定的底栏
  18. What is Double Spending &amp; How Does Bitcoin Handle It?
  19. 高通平台下安卓opencl小例子
  20. Bell数和Stirling数

热门文章

  1. 深入浅析python中的多进程、多线程、协程
  2. 碰撞的小球 ccf (模拟)
  3. 用CSS添加选中文字的背景色
  4. NFS挂载服务具体的实施方案
  5. java项目小手册
  6. Oracle JOB的建立,定时执行任务
  7. farv
  8. ecshop二次开发之后台秒杀
  9. 集合-Map 接口
  10. Keil新建工程步骤