Tienes que aprender cosas básicas, para PHP un request HTTP es un request HTTP, desde donde venga del cliente, no discrimina si es desde AJAX o no a menos que el cliente se lo informe.
Muchos FWs existentes en JS envian una cabecera extra XMLHttpRequest indicando que el request es AJAX, así que puedes verificar en PHP, que si el request no incluye la cabecera XMLHttpRequest no muestras el contenido.
Un ejemplo sencillo:
Código PHP:
Ver original/**
*
* Checks if a request is a AJAX request
* @return bool
*/
function isAjax() {
return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'); }
Claro esto depende de que el cliente mismo te indique que el request es AJAX, de otra manera no es posible discriminarlo.
Usar un token o una sesión no son herramientas efectivas, ya que como te digo, al final todos son requests HTTP que van desde el cliente (browser) al servidor y para PHP es imposible saber de donde fue hecho el request si el cliente mismo no se lo provee.