Ver Mensaje Individual
  #7 (permalink)  
Antiguo 01/12/2011, 09:52
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 8 meses
Puntos: 2135
Respuesta: Restringir acceso a una pagina llamada por ajax

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
  1. /**
  2.  *
  3.  * Checks if a request is a AJAX request
  4.  * @return bool
  5.  */
  6. function isAjax() {
  7.     return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']  == 'XMLHttpRequest');
  8. }

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.