程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP判斷一個請求是AJAX請求還是普通請求

PHP判斷一個請求是AJAX請求還是普通請求

編輯:關於PHP編程

在PHP程序中,如何判斷一個網頁請求是ajax請求還是普通請求?我們在做項目中經常會存在這樣一個問題,在浏覽器中直接輸入我ajax提交的地址後,浏覽器就能直接請求數據並將數據打印到頁面上。從程序的嚴謹性上和安全上來說,我覺得這樣非常不好。

但是由於水平有限,這個問題直到今天才被我解決,特此留下文章以供有此需要的人學習。

首先說說原理:在發送ajax請求的時候,我們可以通過XMLHttpRequest這個對象,創建自定義的header頭信息,如果您使用的是原生的ajax方法,也就是未使用jquery或者其他js框架包裝的ajax方法,那麼代碼如下:

xmlHttpRequest.setRequestHeader("request_type","ajax");

另外通過jquery包裝的$.ajax()方法,我們可以輕松地在發送ajax請求之前,創建我們自定義的header頭信息,示例如下:

$.ajax({
	type:"GET",
	url:base_url + 'php_check_ajax_request/get_user_list.html',
	beforeSend:function (XMLHttpRequest) {
		XMLHttpRequest.setRequestHeader("request_type","ajax");
	},
	success:function(data){
		$("#user_list").html(data);
		$tip.hide();
		$button.attr('disabled',true);
	}
});

上面的代碼中有一句:

XMLHttpRequest.setRequestHeader(“request_type”,”ajax”);

這一句代碼就是向header頭信息裡面創建了一個我們自定義的一個變量“request_type”。這個變量在php中接收變量如下:

$_SERVER['HTTP_REQUEST_TYPE']

那麼對於本文所提出的的問題,我們就可以按下面這種方式來判斷用戶發送的請求是哪種方式了。

<?php
if (isset($_SERVER['HTTP_REQUEST_TYPE']) && $_SERVER['HTTP_REQUEST_TYPE'] == "ajax"){
	//ajax提交
}else{
	//非ajax提交
}

需要說明的是 “request_type”這個變量值是我們自定義的,你還可以隨意自定義,比如“test”,“is_ajax”等等。

您可能感興趣的文章

  • http請求中同步請求和異步請求的區別
  • php判斷字符串是否全英文,純中文,中英文組合的方法
  • php如何判斷當前的操作系統是linux還是windows
  • js如何判斷鼠標滾輪是向下還是向上滾動
  • php判斷日期格式是否正確的方法總結
  • php判斷遠程文件是否存在的辦法
  • 程序員和測試員之間的經典對白。這些是國外程序員總結分享的,稱其上全球通用?
  • php提取身份證號碼中的生日日期以及驗證是否為未成年人的函數

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved