phpbar.de logo

Mailinglisten-Archive

[php] Inhalte von POST requests loggen

[php] Inhalte von POST requests loggen

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Don Dez 8 08:59:54 CET 2005


Hi Frank,

Am Donnerstag, 8. Dezember 2005 08:17 schrieb Frank Rust:
> gibt es irgend eine Standard Möglichkeit die Parameter die per POST
> Request vom Browser übermittelt werden in die Apache Logfiles zu
> bekommen?

eine Standardmöglichkeit ist mir nicht bekannt. Du müßtest dafür vermutlich 
ein eigenes Modul schreiben. Bei einem java-basierten Tomcat-Server wäre das 
sicherlich noch eine berrschbare Aufgabe. ;-)

Außerdem ist es ja so, daß mit POST eine Menge Daten übergeben werden können, 
u.a. z.B. auch hochgeladene Dateien. Das alles generell ungefiltert zu 
loggen, macht sicherlich wenig Sinn.


> Oder generell: kann ich Dinge in die Apache Logs vom PHP 
> aus schreiben? Z.B. Debugging ins error.log und Aufrufparameter
> ins access.log?

Theoretisch ja. Aber: Diese Logs haben fest definierte Formate und werden vom 
Apache selbst benutzt und i.d.R. von Werkzeugen wie LogRotate archiviert. Wo 
willst Du da POST-Daten reinschreiben? Generell würde ich auch von anderen 
Programmen automatisch generierte und geschriebene Dateien nicht mit eigenen 
Programmen ändern.

Aber anders herum wird ein Schuh draus:

Schreibe doch mit PHP die POST-Daten ($_POST) des in Frage stehenden Formulars 
einfach in eine eigene, von Dir angelegte Datei. Das langt doch. Und 
derjenige, der Probleme hat, soll dann das Formular noch mal abschicken, 
während Du mit ihm am Telefon "hängst". Dann kannst Du sofort sehen, was 
Sache ist.


> Ich habe leider immer wieder Leute hier auf meiner Webseite, die
> behaupten alles richtig in die Formulare eingetragen zu haben und
> trotzdem funktioniert es nie. Seltsamerweise funktioniert es für
> mich immer, egal mit welchem Browser ichs probiere...

Erstens mal kann es sein, daß es nicht am Browser, sondern an den von Dir 
vorausgesetzten Browsereinstellungen liegt (z.B. Javascript und/oder Cookies 
aktiviert, HTTP_REFERER wird gesendet), und zweitens können auch Firewalls 
und Proxies dazwischen hängen, die Ärger machen.

Von daher wird es sicherlich nicht reichen, die POST-Daten zu loggen. Du mußt 
z.B. auch den Inhalt von $_SERVER dabei haben. Vielleicht fällt Dir dann mehr 
auf.

Eine dritte, etwas heikle Möglichkeit wäre, daß es an der Verständlichkeit 
Deines Formulars bzw. der Auffassungsgabe der Benutzer liegt... Weißt Du denn 
genau, ob die alles richtig machen? Oder macht Dein Formular bei einer 
Prüfung der eingegebenen Daten alles richtig? Vielleicht verwehrt es ja bei 
bestimmten Eingaben, die eigentlich korrekt sind, bei fehlerhafter Prüfung 
das Abschicken?

Also Du müßtest in den betreffenden Fällen mal genau klären, welche Schritte 
die Anwender gemacht haben und wo was nicht funktioniert hat. Ich habe da 
schon die dollsten Dinge erlebt. Da kommst Du selbst als autodidaktischer 
Programmierer, der noch ein Bißchen Bodenhaftung als Anwender hat, im Leben 
nicht drauf... ;-)))


> Leider kann ich die Aussagen nicht ohne größeren Programmieraufwand
> prüfen, da die Daten per POST Request übermittelt werden.

Wieso nicht? :-) Einfach eine kleines Logging-Skript schreiben und mit 
php_auto_prepend als allerersten Programmcode in alle Seiten einbinden. Wenn 
POST gefüllt ist, wird was geschrieben, sonst nicht.

Manche Aufgaben sind gar nicht so kompliziert, wenn man mal einen Augenblick 
einen Schritt zurücktritt und sich das Ganze aus etwas Entfernung betrachtet. 
Vielfach gibt es eine verblüffend einfache Lösung. Man muß sie nur 
finden. :-)


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive