• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

基于php判断客户端类型

php 搞代码 4年前 (2022-01-22) 26次浏览 已收录 0个评论

在网站用户数据统计的时候,我们经常需要获取用户浏览器的类型和操作系统的类型,本文主要介绍的是基于php判断客户端类型,有需要的朋友可以来了解一下。

方法一:

/** *  * 根据php的$_SERVER['HTTP_USER_AGENT'] 中各种浏览器访问时所包含各个浏览器特定的字符串来判断是属于PC还是移动端 * @author      discuz3x * @lastmodify  2014-04-09 * @return BOOL */function checkmobile() { global $_G; $mobile = array();//各个触控浏览器中$_SERVER['HTTP_USER_AGENT']所包含的字符串数组 static $touchbrowser_list =array('iphone', 'android', 'phone', 'mobile', 'wap', 'netfront', 'java', 'opera mobi', 'opera mini',  'ucweb', 'windows ce', 'symbian', 'series', 'webos', 'sony', 'blackberry', 'dopod', 'nokia', 'samsung',  'palmsource', 'xda', 'pieplus', 'meizu', 'midp', 'cldc', 'motorola', 'foma', 'docomo', 'up.browser'<i>1本文来#源gaodai$ma#com搞$代*码*网</i><pre>搞代gaodaima码

, 'up.link', 'blazer', 'helio', 'hosin', 'huawei', 'novarra', 'coolpad', 'webos', 'techfaith', 'palmsource', 'alcatel', 'amoi', 'ktouch', 'nexian', 'ericsson', 'philips', 'sagem', 'wellcom', 'bunjalloo', 'maui', 'smartphone', 'iemobile', 'spice', 'bird', 'zte-', 'longcos', 'pantech', 'gionee', 'portalmmm', 'jig browser', 'hiptop', 'benq', 'haier', '^lct', '320×320', '240×320', '176×220');//window手机浏览器数组【猜的】 static $mobilebrowser_list =array('windows phone');//wap浏览器中$_SERVER['HTTP_USER_AGENT']所包含的字符串数组 static $wmlbrowser_list = array('cect', 'compal', 'ctl', 'lg', 'nec', 'tcl', 'alcatel', 'ericsson', 'bird', 'daxian', 'dbtel', 'eastcom', 'pantech', 'dopod', 'philips', 'haier', 'konka', 'kejian', 'lenovo', 'benq', 'mot', 'soutec', 'nokia', 'sagem', 'sgh', 'sed', 'capitel', 'panasonic', 'sonyericsson', 'sharp', 'amoi', 'panda', 'zte'); $pad_list = array('pad', 'gt-p1000'); $useragent = strtolower($_SERVER['HTTP_USER_AGENT']); if(dstrpos($useragent, $pad_list)) { return false; } if(($v = dstrpos($useragent, $mobilebrowser_list, true))){ $_G['mobile'] = $v; return '1'; } if(($v = dstrpos($useragent, $touchbrowser_list, true))){ $_G['mobile'] = $v; return '2'; } if(($v = dstrpos($useragent, $wmlbrowser_list))) { $_G['mobile'] = $v; return '3'; //wml版 } $brower = array('mozilla', 'chrome', 'safari', 'opera', 'm3gate', 'winwap', 'openwave', 'myop'); if(dstrpos($useragent, $brower)) return false; $_G['mobile'] = 'unknown';//对于未知类型的浏览器,通过$_GET['mobile']参数来决定是否是手机浏览器 if(isset($_G['mobiletpl'][$_GET['mobile']])) { return true; } else { return false; }}/** * 判断$arr中元素字符串是否有出现在$string中 * @param $string $_SERVER['HTTP_USER_AGENT'] * @param $arr 各中浏览器$_SERVER['HTTP_USER_AGENT']中必定会包含的字符串 * @param $returnvalue 返回浏览器名称还是返回布尔值,true为返回浏览器名称,false为返回布尔值【默认】 * @author discuz3x * @lastmodify 2014-04-09 */function dstrpos($string, $arr, $returnvalue = false) { if(empty($string)) return false; foreach((array)$arr as $v) { if(strpos($string, $v) !== false) { $return = $returnvalue ? $v : true; return $return; } } return false;}

方法二:

<?phpfunction 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;} ?>

判断手机端是IOS还是Android

代码如下:

/** * 判断是否手机访问 */function is_mobile(){  static $is_mobile;  if (isset($is_mobile)) return $is_mobile;  if (empty($_SERVER['HTTP_USER_AGENT'])) {    $is_mobile = false;  } elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.)    || 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;}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:基于php判断客户端类型
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址