PHP判斷一個請求是AJAX請求還是普通請求
添加時間:2014-7-2 7:45:32
添加:
思海網絡
在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”等等。
關鍵字:PHP、數據、程序、AJAX
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解