php中$_SERVER'HTTP_USER_AGENT'判斷是否爲手機訪問網站

HTTP_USER_AGENT是獲取用戶浏覽器信息的一個全局變量,我們可以利用HTTP_USER_AGENT獲取的值來判斷用戶是手機浏覽器還是電腦訪問網。
代碼如下

$uAgent = $_SERVER['HTTP_USER_AGENT'];

$osPat = "mozilla|m3gate|winwap|openwave|Windows NT|Windows 3.1|95|Blackcomb|98|ME|X Window|ubuntu|Longhorn|AIX|Linux|AmigaOS|BEOS|HP-UX|OpenBSD|FreeBSD|NetBSD|OS/2|OSF1|SUN";

if(preg_match("/($osPat)/i", $uAgent )) //winwap 模擬WAP手機上網的一個浏覽器; openwave|後面爲各pc操作系統

{

echo "電腦訪問";

}

else

{

echo "手機訪問";

}

echo '<br/>'.$uAgent;

現在我們事完整的把實例寫成一個文件

代碼如下


$ua = strtolower($_SERVER['HTTP_USER_AGENT']);

$uachar = "/(nokia|sony|ericsson|mot|samsung|sgh|lg|philips|panasonic|alcatel|lenovo|cldc|midp|mobile|wap)/i";

if(($ua == '' || preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER['REQUEST_URI']),'wap'))
{
$Loaction = 'wap/';

if (!empty($Loaction))
{
ecs_header("Location: $Loactionn");

exit;
}

}


/**
* 自定義 header 函數,用于過濾可能出現的安全隱患
*
* @param string string 內容
*
* @return void
**/
function ecs_header($string, $replace = true, $http_response_code = 0)
{
if (strpos($string, '../upgrade/index.php') === 0)
{
echo '<script type="text/javascript">window.location.href="' . $string . '";</script>';
}
$string = str_replace(array("r", "n"), array('', ''), $string);

if (preg_match('/^s*location:/is', $string))
{
@header($string . "n", $replace);

exit();
}

if (emptyempty($http_response_code) || PHP_VERSION < '4.3')
{
@header($string, $replace);
}
else
{
@header($string, $replace, $http_response_code);
}
}

javascript中采用navigator.userAgent 來獲取,但非智能機似乎不支持js。

支持js的移動客戶端還可以用以下代碼簡單判斷是不是windows電腦訪問的

代碼如下

if(navigator.platform.indexOf('Win32')!=-1){
//go to pc
}else{
// go to 手機
}

更多關于判斷手機訪問文章 http://www.111cn.net/phper/php-cy/44574.htm

更多相關文章
  • 下文來爲各位整理一段php判斷是android還是ios還是wp的訪問網站例子,非常 的實用希望對各位朋友會有所幫助.在php中可以用$_SERVER['HTTP_USER_AGENT']來區分是android.ios還是wp的請求,具體可以用以下代碼來實現:$userAgent = $_SERVE
  • c# 如何判斷字符串爲空分析我們可以看到,使用length法來進行字符串判空串是有著很大的效能優勢的,尤其在進行大量字符串判空時!當然首先得判斷字符串實例是否爲空引用!1. 三種常用的字符串判空串方法:length法
  • L2TP撥號後爲何只能訪問遠端內網
    有使用L2TP撥號後爲何只能訪問遠端內網,這是什麽原因呢,下面小編給大家來介紹如何解決此問題,希望此方法對各位有所幫助吧.如下圖所示,TL-ER6110/6120作爲PPTP.L2TP伺服器,外網用戶PPTP.L2TP撥號成功後只能訪問遠端內網“192.168.0.0/24”,不能訪問Interne ...
  • 現在web發展速度非常快.各種回應式的站點越來越多.除了APP外.在平時可能需要根據客戶終端訪問來載入不同時模板或跳轉到不同時的域名下.現在分享一個函數.可以做到這樣判斷.android.ios和wp都已經測試過. 代碼如下 //判斷mobliefunction is_mobile(){ $_SER
  • ckeditor是以前Fckeditor編輯器的重新命名了,在ckeditor編輯器中我們不能使用簡單的js來獲取ckeditor編輯器的內容哦,但是ckeditor爲我們提供了一個FCKeditorAPI,他可以幫我們來實現FCKeditor的內容和判斷內容是否爲空等操作.獲取ckeditor內容 ...
  • function jstrim(value){ return value.replace(/(^s*)|(s*$)/g,"");}function isnull( chars ) { if (chars == nul
  • 本文我們來分享用php如何識別用戶是通過 PC.iPad 還是手機,然後我們還可以看看騰訊的通過JS語句判斷WEB網站的訪問端是電腦還是手機.先我們來看看一段用php如何識別用戶是通過 PC.iPad 還是手機來訪問
  • php如何判斷用戶通過手機wap訪問還是電腦直接訪問
    現在我們智能手機用戶很多了,訪問網站也有很多朋友使用手機直接訪問,這樣存在問題了如果是pc版本手機訪問肯定不好看還費人家流量了,所以很多公司做了wap站了,但是要如何判斷用戶是手機還是pc訪問網站呢,下面我整理了一些方法.最近做一個手機查詢系統,自然就牽扯到了此問題,那我就根據對wap的認識淺談下通 ...
一周排行
  • php date(): It is not safe 警告錯誤是因爲說timezone沒有設置,在中國使用的是格林+8小時,所以需要設置一下. 升級php版本從PHP5.2.17 到 PHP 5.3.21 後出現如下
  • xml文檔是一個比較特殊的純文形式的數據存儲格式了,xml常用于各種數據api交互,也同時用于不同腳本之前的數據交換了,下面我們一起來看個簡單的java讀取xml文件實例.XML具體文件如下: 代碼如下 <?x ...
  • 本文章來介紹關于Curl監控Nginx網站狀態,如回應502信息即重啓php-fpm,各位朋友可進入參考.此腳本用Curl監控Nginx網站狀態,如回應502信息即重啓LNMP. 代碼如下 #!/bin/bashif ...
  • Windowns 7怎麽搭建本地Web伺服器(安裝iis)
    Web伺服器就是一個可以運行iis,htm,php等動態腳本的環境了,以前的xp我們是安裝
  • AngularJS form表單驗證非常全面)
    AngularJS表單驗證前面小編有介紹一個簡單的例子,下文才是一篇非常全面的介紹了Ang ...
  • 一.集成方法 FCKeditor應用在ASP.NET上,需要兩組文件,一組是FCKeditor本身,另一個是用于ASP.NET的FCKeditor控件(分爲1.1和2.0兩個版本,這裏使用2.0版本). 1. 將FC
  • NP-Q470-JS0BCN電腦如何設置開機啓動項(win7)
    當筆記本開機啓動速度變慢時,一般是由于系統開機啓動項太多導致.可以通過使用Windows系 ...
  • 下面來分享一個帶緩存數據功能的mysqli類,有需要的同學可看看. 代碼如下 <?php /** * Mysqli類 * * @author 廢墟 * @version v1.0 8 */ c ...
  • RAR命令是linux中一個文件解壓命令了但默認是沒有安裝了,我們是需要通過安裝 RAR命令之後才可以使用,下面一起來看看.在Windows下的winrar幾乎一統壓縮軟件的市場占有率,winrar只是RAR在Win ...
  • MYSQL無法超過4G限于MYISAM引擎了,其它的數據存儲引擎本人沒試過,不過mysql不能超過4GB我們也可以解決,只要對MYISAM引擎進行簡單操作即可.前兩天在WINDOWS下搭建MYSQL,可是發現數據庫單