2009-11-22 16 views
20

Acabo de empezar a usar CodeIgniter después de usar Zend por un tiempo. Mi nuevo sitio tiene una función en la que te registras a través de Ajax. En Zend podría utilizar esto para comprobar si el correo de entrada era a través de AJAX, y por lo tanto de mi sitio:¿Cómo saber si una publicación proviene de una llamada ajax en codeigniter?

if(!$this->getRequest()->isXMLHttpRequest()) 

¿Hay un pedazo de código en CodeIgniter que hace lo mismo? Si no me aseguro de que sea una llamada AJAX, alguien teóricamente podría registrar cualquier cosa que quisiera creando un formulario para publicar en mi controlador.

Gracias!

+0

Si usted está preocupado por alguien POSTeando algo de otro sitio web, no hace ninguna diferencia si su controlador es AJAX o no. Utilice CAPTCHA y la autenticación del lado del servidor (por ejemplo, pase una variable oculta al formulario que está marcado cuando se envía el formulario) para controlar las solicitudes POST. –

+0

¿No podrían simplemente usar Firebug para ver la variable e incluirla ellos mismos? – Ethan

+0

Si está preguntando sobre la variable oculta, está en lo cierto. Puede usar Firebug, cURL o cientos de otros métodos para pasar los datos POST que desee. Lo que desea hacer es enviar al usuario algunos datos ocultos que son únicos para ese usuario/sesión/tiempo y almacenados en una base de datos. Cuando se envía el formulario, puede verificar el campo oculto que se le pasó contra la base de datos. –

Respuesta

20
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')) {} 

Pero como usa codeigniter, es mejor usar su clase de entrada. Vea cómo hacerlo a continuación.

if($this->input->is_ajax_request()){ 
    //Execute Your Code 
} 
+0

su solución es correcta, sin embargo, no es la forma en que se hace en CodeIgniter. –

0

se puede comprobar utilizando

$this->input->is_ajax_request(); 
+1

Intente proporcionar su respuesta con más detalles –

+0

https://codeigniter.com/user_guide/libraries/input.html?highlight=is_ajax_request#CI_Input::is_ajax_request – user3470929

Cuestiones relacionadas