En ciertas ocasiones puede venir bien conocer, desde PHP, si una petición HTTP se ha realizado vía "Ajax" o no. Por ejemplo, un determinado "script" requerido en nuestro proyecto, puede "dar salida" a ciertos datos, dependiendo de si este ha sido requerido vía "Ajax" o no. Sea como sea, la siguiente función nos proporcionará lo que queremos saber:

function IsXmlHttpRequest(){
  return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
	 (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 
	  'xmlhttprequest');
}

Se trata de comprobar si existe un determinado elemento de la variable "super global" que contiene información del servidor, y, si es así, echar un vistazo al valor de dicho elemento, para ver si coincide con el que nos interesa en este caso. Si las condiciones se cumplen sabremos que estamos ante una petición HTTP vía "Ajax", información que podremos utilizar para lo que sea menester.

Sea como sea, parece que la información proporcionada por "HTTP X REQUESTED WITH" puede no estar siempre disponible. Según he podido leer buena parte de las bibliotecas que solemos usar para realizar peticiones HTTP de este tipo (desde el cliente, con JavaScript) incluyen la cabecera HTTP necesaria para que dicha información esté disponible. No obstante, como quiera que queda lugar para dudas, no conviene usar "IsXmlHttpRequest()", tal como está, en procesos críticos, por decirlo así.