PHP怎么判断一个客户端是手机还是电脑

 3702

php判断一个客户端是手机还是电脑的方法:首先创建一个PHP示例文件;然后通过判断“$_SERVER['HTTP_USER_AGENT']”里是否含有关键字“mobile”来实现即可。


PHP怎么判断一个客户端是手机还是电脑


php怎么判断一个客户端是手机还是电脑?

PHP判断请求是否来自移动端还是PC端

如题,其实最简单的方法就是判断$_SERVER['HTTP_USER_AGENT']里是否含有关键字“mobile”(user_agent里面包含了用户的设备信息),下面是thinkphp论坛上的找到的更好的判断方法:

  1. function isMobile(){ 
  2.     // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
  3.     if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])){
  4.         return true;
  5.     }
  6.     // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
  7.     if (isset ($_SERVER['HTTP_VIA'])){
  8.         return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;// 找不到为false,否则为true
  9.     } 
  10.     // 判断手机发送的客户端标志,兼容性有待提高
  11.     if (isset ($_SERVER['HTTP_USER_AGENT'])) {
  12.         $clientkeywords = array (
  13.             'mobile',
  14.             'nokia',
  15.             'sony',
  16.             'ericsson',
  17.             'mot',
  18.             'samsung',
  19.             'htc',
  20.             'sgh',
  21.             'lg',
  22.             'sharp',
  23.             'sie-',
  24.             'philips',
  25.             'panasonic',
  26.             'alcatel',
  27.             'lenovo',
  28.             'iphone',
  29.             'ipod',
  30.             'blackberry',
  31.             'meizu',
  32.             'android',
  33.             'netfront',
  34.             'symbian',
  35.             'ucweb',
  36.             'windowsce',
  37.             'palm',
  38.             'operamini',
  39.             'operamobi',
  40.             'openwave',
  41.             'nexusone',
  42.             'cldc',
  43.             'midp',
  44.             'wap'
  45.         ); 
  46.         // 从HTTP_USER_AGENT中查找手机浏览器的关键字
  47.         if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))){
  48.             return true;
  49.         }
  50.     }
  51.     if (isset ($_SERVER['HTTP_ACCEPT'])){ // 协议法,因为有可能不准确,放到最后判断
  52.         // 如果只支持wml并且不支持html那一定是移动设备
  53.         // 如果支持wml和html但是wml在html之前则是移动设备
  54.         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')))){
  55.             return true;
  56.         }
  57.     }
  58.     return false;
  59. }

当然也可以使用PHP的mobile-detect类: https://github.com/serbanghita/Mobile-Detect

不过我觉得没必要引入那么一大段代码来检测(如果有特殊的检测需求,比如检测iPhone设备,检测iPad设备,那么mobile-detect是不错的选择),一般情况下,分析USER_AGENT来判断就可以了。


TAG标签:
本文网址:https://www.zztuku.com/detail-8975.html
站长图库 - PHP怎么判断一个客户端是手机还是电脑
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐