欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于php判斷客戶端類型

 更新時間:2016年10月14日 16:14:57   作者:scofi  
本文主要介紹的是PHP判斷客戶端是PC端還是移動手機端方法,可以方便網站用于統計,需要了解的朋友可以參考一下。

在網站用戶數據統計的時候,我們經常需要獲取用戶瀏覽器的類型和操作系統的類型,本文主要介紹的是基于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',
  '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', '320x320', '240x320', '176x220');
//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;
}

方法二:

<?php
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;
  } 
  // 腦殘法,判斷手機發(fā)送的客戶端標志,兼容性有待提高
  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;
}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版

    UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版

    這篇文章主要介紹了UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版的相關資料,需要的朋友可以參考下
    2015-12-12
  • tp5 實現列表數據根據狀態(tài)排序

    tp5 實現列表數據根據狀態(tài)排序

    今天小編就為大家分享一篇tp5 實現列表數據根據狀態(tài)排序,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • 百萬級別知乎用戶數據抓取與分析之PHP開發(fā)

    百萬級別知乎用戶數據抓取與分析之PHP開發(fā)

    這篇文章主要介紹了百萬級別知乎用戶數據抓取與分析之PHP開發(fā)的相關資料,需要的朋友可以參考下
    2015-09-09
  • php實現圖片縮略圖的方法

    php實現圖片縮略圖的方法

    本文使用php實現的圖片縮略圖,支持jpg,jpeg,gif,png,bmp圖片格式,支持按原圖片的比例進行縮放,可以選擇在圖片縮放的過程中是否需要對圖片進行裁切,加入了圖片質量控制,可以實現縮略圖片質量最高化,需要的朋友可以參考下本段代碼
    2016-03-03
  • php??intval函數的用法示例小結

    php??intval函數的用法示例小結

    這篇文章主要介紹了php??intval函數的用法,intval()函數用于將字符串轉換為整數,可以指定進制數,并可以處理前導零和非數字字符,本文通過示例給大家介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • PHP執(zhí)行l(wèi)inux命令常用函數匯總

    PHP執(zhí)行l(wèi)inux命令常用函數匯總

    一般情況下,很少會用php去執(zhí)行l(wèi)inux命令,不過特殊情況下,你也許會用到這些函數。以前我知道有二個函數可以執(zhí)行l(wèi)inux命令,一個是exec,一個是shell_exec,通過本文給大家介紹PHP執(zhí)行l(wèi)inux命令常用函數匯總,需要的朋友參考下
    2016-02-02
  • PHP編寫RESTful接口的方法

    PHP編寫RESTful接口的方法

    這篇文章主要為大家詳細介紹了PHP編寫RESTful接口的方法,如何使用PHP編寫RESTful接口,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Zend Framework教程之動作的基類Zend_Controller_Action詳解

    Zend Framework教程之動作的基類Zend_Controller_Action詳解

    這篇文章主要介紹了Zend Framework教程之動作的基類Zend_Controller_Action的用法,結合實例形式詳細分析了動作的基類Zend_Controller_Action具體功能,使用方法與相關注意事項,需要的朋友可以參考下
    2016-03-03
  • PHP+Apache+Mysql環(huán)境搭建教程

    PHP+Apache+Mysql環(huán)境搭建教程

    這篇文章主要為大家詳細介紹了PHP+Apache+Mysql環(huán)境搭建教程,一步步實現php開發(fā)環(huán)境搭建,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Yii框架日志操作圖文與實例詳解

    Yii框架日志操作圖文與實例詳解

    這篇文章主要介紹了Yii框架日志操作,結合圖文與實例形式詳細分析了Yii日志操作相關配置、使用方法及操作注意事項,需要的朋友可以參考下
    2019-09-09

最新評論