萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php 判斷是否為ajax請求

php 判斷是否為ajax請求

大多數的 JavaScript 框架如 jquery,Mootools 等,在發出 Ajax 請求時,都會發送額外的 HTTP_X_REQUESTED_WITH 頭部信息,頭當他們一個ajax請求,因此你可以在服務器端偵測到 Ajax 請求

1,   通過傳遞_GET參數的方法簡單實現網頁請求的判斷。

url上這麼傳遞:*******.php?ajax

php這麼判斷:

if(isset($_GET['ajax'])) {

...這是一個ajax請求,然後...

}

else {

...這不是一個ajax請求,然後...

}

這種實現方法很差勁,相當容易容易容易偽造。判斷和不判斷麼有任何區別。
所以又出來一種自認為很科學的處理方式,這種方式確實有一定的學習價值。


Php獲取系統變量中的xmlHttpRequest判讀。

首先你必須使用jquery,Js發送ajax請求,通過jquery發送的$.ajax, $.get, or $.post方法請求網頁內容時,它會向服務器傳遞一個HTTP_X_REQUESTED_WITH的參數,這個參數的值是xmlHttpRequest。

Js 代碼:

 代碼如下 復制代碼

beforeSend : function (XMLHttpRequest) {

    XMLHttpRequest.setRequestHeader("X-Requested-With","XMLHttpRequest");

};

參數名X-Requested-With,參數值XMLHttpRequest,你可以任意定義。Php取得時候要在參數名前面加上大寫的http字樣

 

 代碼如下 復制代碼

if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
//If AJAX Request Then
}else{
//something else
}

1,  如果

你的jquery請求是通過iframe打開網頁的,那麼HTTP_X_REQUESTED_WITH參數不會被傳遞,也就是說你沒有辦法判斷請求的類型。

2,  IE5,IE6老版本的浏覽器總中$.ajax, $.get, or $.post方法不會自動發送HTTP_X_REQUESTED_WITH的參數到頭部信息,因為php中也是無法獲取參數進行判斷。除非你自己構造XMLHttpRequest對象出來,然後再發送給php腳本,相當於用最原始的js實現ajax功能。這樣做,jquery框架本來封裝好的ajax就失去意義啦

copyright © 萬盛學電腦網 all rights reserved