Come Identificare le Richieste AJAX in PHP

In questo breve articolo vedremo come è possibile determinare se la richiesta effettuata ad un determinato file php è ajax (asincrona) oppure una semplice richiesta http.

if(!empty($_SERVER[‘HTTP_X_REQUESTED_WITH’]) && strtolower($_SERVER[‘HTTP_X_REQUESTED_WITH’]) == ‘xmlhttprequest’) {
die(‘sono ajax’);
}
L’array globale $_SERVER, in caso di chiamata ajax, avrà la chiave HTTP_X_REQUESTED_WITH impostata come xmlhttprequest. In effetti la piccola porzione di codice sopra controllera in primo luogo che la chiave sia presente e quindi se questa è impostata come xmlhttprequest. In questo modo se abbiamo bisogno di settare un header oppure di effettuare altre operazioni solo nel caso in cui la richiesta sia asincrona possiamo farlo all’interno dell’if.

Personalmente, come ho scritto in diversi articoli, inserisco questi controlli all’interno di una classe apposita (solitamente la chiamo utility o tools) come metodi

public static function isAjaxRequest(){
if(!empty($_SERVER[‘HTTP_X_REQUESTED_WITH’]) && strtolower($_SERVER[‘HTTP_X_REQUESTED_WITH’]) == ‘xmlhttprequest’) {
return true;
}
return false;
}
Se fate attenzione alla dichiarazione del metodo questo è dichiarato statico (static), in questo modo è possibile richiamare il metodo senza instanziare direttamente nessun oggetto. Supponendo che la classe che contenga il metodo si chiami Tools potremo invocarlo così:

$isAjax=Tools::isAjaxRequest();