2009-11-22 2 views
20

Ich habe gerade mit CodeIgniter angefangen, nachdem ich Zend eine Weile benutzt habe. Meine neue Seite hat eine Funktion, bei der Sie sich über Ajax registrieren. In Zend könnte ich dies, wenn die eingehende Post durch AJAX ist zu überprüfen, und deshalb von meiner Website:Weise zu sagen, ob ein Beitrag von einem Ajax-Aufruf in Codeigniter kam?

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

Gibt es ein Stück Code in CodeIgniter, die die gleiche Sache tut? Wenn ich nicht sicher bin, dass es ein AJAX-Anruf ist, könnte jemand theoretisch alles, was er wollte, registrieren, indem er ein Formular erstellt, das er an meinen Controller senden soll.

Danke!

+0

mit der Wenn Sie besorgt sind über jemand etwas von einer anderen Website hinzuzufügen, macht es keinen Unterschied, ob der Handler AJAX ist oder nicht. Verwenden Sie CAPTCHAs und serverseitige Authentifizierung (z. B. übergeben Sie eine ausgeblendete Variable an das Formular, das überprüft wird, wenn das Formular gesendet wird), um POST-Anforderungen zu steuern. –

+0

Könnten sie nicht einfach Firebug verwenden, um die Variable zu sehen und sie selbst einzubeziehen? – Ethan

+0

Wenn Sie nach der versteckten Variable fragen, haben Sie Recht. Sie können Firebug, cURL oder Hunderte anderer Methoden verwenden, um die gewünschten POST-Daten zu übergeben. Was Sie tun möchten, ist, dem Benutzer einige versteckte Daten zu senden, die für diesen Benutzer/diese Sitzung/Zeit eindeutig sind und in einer Datenbank gespeichert sind. Wenn das Formular abgeschickt wird, können Sie das versteckte Feld überprüfen, das an die Datenbank übergeben wurde. –

Antwort

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

Aber da Sie codeigniter verwenden, ist es besser, ihre Eingabeklasse zu verwenden. Sehen Sie unten, wie es geht.

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

Ihre Lösung ist richtig, aber es ist nicht so, wie es in CodeIgniter gemacht wird. –

0

Sie es überprüfen

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

Versuchen Sie, Ihre Antwort mit weiteren Details zu geben –

+0

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

Verwandte Themen