2009-11-22 12 views
20

Ho appena iniziato a usare CodeIgniter dopo aver usato Zend per un po '. Il mio nuovo sito ha una funzione in cui ti registri tramite Ajax. In Zend Potrei usare questo per verificare se la posta in entrata era attraverso AJAX, e quindi dal mio sito:Modo per dire se un post proviene da una chiamata Ajax in codeigniter?

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

C'è un pezzo di codice in CodeIgniter che fa la stessa cosa? Se non mi assicuro che si tratti di una chiamata AJAX, qualcuno potrebbe teoricamente registrare tutto ciò che desidera creando un modulo da pubblicare sul mio controller.

Grazie!

+0

Se siete preoccupati per qualcuno pubblichi qualcosa da un altro sito, non fa alcuna differenza se il gestore è AJAX o no. Utilizza CAPTCHA e autenticazione lato server (ad esempio, passa una variabile nascosta al modulo che è stato selezionato per l'invio del modulo) per controllare le richieste POST. –

+0

Non potrebbero semplicemente usare firebug per vedere la variabile e includerla da sé? – Ethan

+0

Se stai chiedendo informazioni sulla variabile nascosta, sei corretto. Puoi usare Firebug, cURL o centinaia di altri metodi per passare qualsiasi dato POST che desideri. Quello che vorresti fare è inviare all'utente alcuni dati nascosti che sono unici per quell'utente/sessione/ora e memorizzati in un database. Quando il modulo viene inviato, è possibile controllare il campo nascosto passato all'utente sul database. –

risposta

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

Ma poiché si utilizza il codeigniter, è meglio utilizzare la classe di input. Vedi come farlo qui sotto.

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

la soluzione è corretta, tuttavia non è il modo in cui è stata eseguita in CodeIgniter. –

0

si può controllare usando

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

Prova a fornire la risposta con ulteriori dettagli –

+0

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

Problemi correlati