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

基于php判斷客戶端類型

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

在網(wǎng)站用戶數(shù)據(jù)統(tǒng)計(jì)的時(shí)候,我們經(jīng)常需要獲取用戶瀏覽器的類型和操作系統(tǒng)的類型,本文主要介紹的是基于php判斷客戶端類型,有需要的朋友可以來了解一下。

方法一:

/**
 * 
 * 根據(jù)php的$_SERVER['HTTP_USER_AGENT'] 中各種瀏覽器訪問時(shí)所包含各個(gè)瀏覽器特定的字符串來判斷是屬于PC還是移動(dòng)端
 * @author      discuz3x
 * @lastmodify  2014-04-09
 * @return BOOL
 */
function checkmobile() {
 global $_G;
 $mobile = array();
//各個(gè)觸控瀏覽器中$_SERVER['HTTP_USER_AGENT']所包含的字符串?dāng)?shù)組
 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手機(jī)瀏覽器數(shù)組【猜的】
 static $mobilebrowser_list =array('windows phone');
//wap瀏覽器中$_SERVER['HTTP_USER_AGENT']所包含的字符串?dāng)?shù)組
 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';
//對(duì)于未知類型的瀏覽器,通過$_GET['mobile']參數(shù)來決定是否是手機(jī)瀏覽器
 if(isset($_G['mobiletpl'][$_GET['mobile']])) {
 return true;
 } else {
 return false;
 }
}
/**
 * 判斷$arr中元素字符串是否有出現(xiàn)在$string中
 * @param $string   $_SERVER['HTTP_USER_AGENT'] 
 * @param $arr     各中瀏覽器$_SERVER['HTTP_USER_AGENT']中必定會(huì)包含的字符串
 * @param $returnvalue 返回瀏覽器名稱還是返回布爾值,true為返回瀏覽器名稱,false為返回布爾值【默認(rèn)】
 * @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則一定是移動(dòng)設(shè)備
  if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
  {
    return true;
  } 
  // 如果via信息含有wap則一定是移動(dòng)設(shè)備,部分服務(wù)商會(huì)屏蔽該信息
  if (isset ($_SERVER['HTTP_VIA']))
  { 
    // 找不到為flase,否則為true
    return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
  } 
  // 腦殘法,判斷手機(jī)發(fā)送的客戶端標(biāo)志,兼容性有待提高
  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中查找手機(jī)瀏覽器的關(guān)鍵字
    if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
    {
      return true;
    } 
  } 
  // 協(xié)議法,因?yàn)橛锌赡懿粶?zhǔn)確,放到最后判斷
  if (isset ($_SERVER['HTTP_ACCEPT']))
  { 
    // 如果只支持wml并且不支持html那一定是移動(dòng)設(shè)備
    // 如果支持wml和html但是wml在html之前則是移動(dòng)設(shè)備
    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;
} 
?>

判斷手機(jī)端是IOS還是Android

代碼如下:

/**
 * 判斷是否手機(jī)訪問
 */
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;
}

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

相關(guān)文章

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

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

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

    tp5 實(shí)現(xiàn)列表數(shù)據(jù)根據(jù)狀態(tài)排序

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

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

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

    php實(shí)現(xiàn)圖片縮略圖的方法

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

    php??intval函數(shù)的用法示例小結(jié)

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

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

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

    PHP編寫RESTful接口的方法

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

    Zend Framework教程之動(dòng)作的基類Zend_Controller_Action詳解

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

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

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

    Yii框架日志操作圖文與實(shí)例詳解

    這篇文章主要介紹了Yii框架日志操作,結(jié)合圖文與實(shí)例形式詳細(xì)分析了Yii日志操作相關(guān)配置、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09

最新評(píng)論