Here’s a quick piece of code that i find useful to check if a request
that comes to a PHP page was made via an Ajax call or a simple form
post. This method uses the $_SERVER['HTTP_X_REQUESTED_WITH'] request to
determine if data was sent to a specific page using an xmlhttprequest.
It’s worth bearing in mind that there is no guarantee that every web
server will provide this setting, servers may omit specific $_SERVER
parameters, That said, a large number of these variables are accounted
for, you can find more information about $_SERVER variables here.
The PHP
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { // If its an ajax request execute the code below echo 'This is an ajax request!'; exit; } //if it's not an ajax request echo the below. echo 'This is clearly not an ajax request!';
The code is pretty self explanatory we are literally checking to see
if the request was sent via an xmlhttprequest. In the Demo below i’ve
setup a page that contains a jQuery Ajax request to our code above and a
simple form with a button that just submits to the same page.