php 判斷是否為ajax請求

來源:互聯網
上載者:User

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就失去意義啦

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.