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

基于php判斷客戶端類(lèi)型

 更新時(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)常需要獲取用戶瀏覽器的類(lèi)型和操作系統(tǒng)的類(lèi)型,本文主要介紹的是基于php判斷客戶端類(lèi)型,有需要的朋友可以來(lái)了解一下。

方法一:

/**
 * 
 * 根據(jù)php的$_SERVER['HTTP_USER_AGENT'] 中各種瀏覽器訪問(wèn)時(shí)所包含各個(gè)瀏覽器特定的字符串來(lái)判斷是屬于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ì)于未知類(lèi)型的瀏覽器,通過(guò)$_GET['mobile']參數(shù)來(lái)決定是否是手機(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 返回瀏覽器名稱(chēng)還是返回布爾值,true為返回瀏覽器名稱(chēng),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ī)訪問(wèn)
 */
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ì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • 百萬(wàn)級(jí)別知乎用戶數(shù)據(jù)抓取與分析之PHP開(kāi)發(fā)

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

    這篇文章主要介紹了百萬(wàn)級(jí)別知乎用戶數(shù)據(jù)抓取與分析之PHP開(kāi)發(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)行縮放,可以選擇在圖片縮放的過(guò)程中是否需要對(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ù)字字符,本文通過(guò)示例給大家介紹的非常詳細(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命令,不過(guò)特殊情況下,你也許會(huì)用到這些函數(shù)。以前我知道有二個(gè)函數(shù)可以執(zhí)行l(wèi)inux命令,一個(gè)是exec,一個(gè)是shell_exec,通過(guò)本文給大家介紹PHP執(zhí)行l(wèi)inux命令常用函數(shù)匯總,需要的朋友參考下
    2016-02-02
  • PHP編寫(xiě)RESTful接口的方法

    PHP編寫(xiě)RESTful接口的方法

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

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

    這篇文章主要介紹了Zend Framework教程之動(dòng)作的基類(lèi)Zend_Controller_Action的用法,結(jié)合實(shí)例形式詳細(xì)分析了動(dòng)作的基類(lèi)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開(kāi)發(fā)環(huán)境搭建,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Yii框架日志操作圖文與實(shí)例詳解

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

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

最新評(píng)論