[PHP] Ajax 通信かどうかの判定方法
PHP で Ajax からのリクエストか、 Submit とかできたリクエストなのかを判定する方法。
jQuery とか prototype とかのライブラリを使って Ajax リクエストを送ると、リクエストヘッダに「 X-Requested-With:XMLHttpRequest
」ていうのが入ってくるので、これを使って判断する。
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// Ajax からのリクエスト
} else {
// Ajax ではない
}
ライブラリを使わないで、 JavaScript とかで Ajax 通信するならヘッダに X-Requested-With:XMLHttpRequest
を付ける。
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET', URL, true); // true:非同期モード , false :同期モード
// header は open() の後、 send() の前にセットする
xmlhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xmlhttp.onreadystatechange = function() {
// readyState == 4 : 通信完了
if (xmlhttp.readyState == 4 {
if (xmlhttp.status == 200) {
console.log('Success');
} else {
console.log('Error');
}
} else {
console.log('Sending');
}
};
xmlhttp.send();