2016-05-10 6 views
2

Ich arbeite an einer kleinen Anwendung, die viele AJAX-Anforderungen insbesondere an eine Datei hat.Ermitteln, welche Datei AJAX-Anfrage von in PHP kommt

Sobald die Anfrage empfangen wird, möchte ich die PHP-Action-Datei protokollieren, wo die Anfrage kommt und weitere Entscheidungen treffen. In der PHP-Aktionsdatei habe ich versucht, mit $_SERVER['REQUEST_URI'] den Speicherort der AJAX-Übermittlung zu bestimmen, jedoch gibt dies stattdessen den Ort der PHP-Aktionsdatei zurück.

Gibt es eine Möglichkeit, HTTP, $_POST oder dergleichen zu verwenden, um dies zu erreichen, ohne eine andere Variable manuell an das Objekt post in jedem Formular anhängen zu müssen?

der Suche nach so etwas wie:

$origin = $_POST['origin']; 
echo $origin; // returns either 'form-submit.js' or '/path/form-page.php' 
+0

Mit Datei meinen Sie die Javascript-Datei oder die URL? – 1N5818

+0

Hat '$ _SERVER ['REMOTE_ADDR']' Ihnen was Sie wollen? – WillardSolutions

+1

Wenn Sie die Seiten steuern, die die Anfragen stellen, können Sie Ihre AJAX-Anfrage ändern, um den Ursprung zusammen mit dem, was sonst gesendet wird, zu senden. –

Antwort

4

Ohne einen weiteren Parameter zu Ihrer Ajax-Request hinzufügen, die nächste Sache, die Sie bekommen, was Sie suchen ist $_SERVER['HTTP_REFERER'] in PHP zu verwenden, um den Wert des zu bekommen Referer Header, der angibt, aus welcher Seite der Benutzer stammt.

Natürlich kann dieser Wert nicht vertraut werden, es kann nicht garantiert werden, dass er vorhanden sein wird (einige können ihn deaktivieren) oder allgemein auf ihn vertrauen.

Sie sind besser dran, einen weiteren Parameter zu Ihrer Anfrage hinzuzufügen, aber das kann natürlich auch auf der Client-Seite geändert werden.

+0

Das funktioniert wirklich gut! Wie jedoch in den obigen Kommentaren zu sehen und in Ihrer Antwort als nicht vertrauenswürdig zu beschreiben, gibt es einen bestimmten Grund, dass dieser Wert unzuverlässig oder manipuliert sein könnte? – JLF

+2

Es ist unzuverlässig, weil es vom Client (Browser) gesendet wird, so dass es leicht manipuliert werden kann, um etwas anderes zu sein, oder Plugins verwenden, um es davon abzuhalten, vollständig gesendet zu werden. Verlassen Sie sich also nicht darauf, dass es anwesend ist, und wenn es so ist, ist es möglich, dass es nicht den tatsächlichen Referer darstellt, obwohl es in den meisten Fällen gut ist. Seien Sie sich bewusst, dass es leicht zu manipulieren ist. – drew010

Verwandte Themen