<form action="SELBE_SEITE">
hannes
- php
Hallo,
ich brauche eine Lösung, um ein Formular, das auf vielen Seiten vorkommt, immer auf die aktuelle Seite zu submitten.
Das $_SERVER('PHP_SELF') unsicher ist, ist mir klar.
Bliebe noch action leer zu lassen oder mit einem ? oder # zu füllen, jedoch bin ich mir nicht sicher, ob das Browserabhängig ist, oder ob ich davon ausgehen kann, dass man immer auf der selben Seite landet.
Ich verwende (da mir kein mod_rewrite zur Verfügung steht) in meinem Projekt $_SERVER('REQUEST_URI') um z.B. soetwas wie index.php/kategorie1/artikel2 zu verarbeiten.
Ich dachte schon daran dies zu verwenden, jedoch ist Ausgabe von soetwas im HTML-form-action ja genauso ungünstig, da man ja in die Adresszeile alles einschleusen könnte.
Gibt es eine elegante Lösung um ein Formular, immer an die aktuelle Seite zu posten?
Gruß
P.S.: Mir ist klar, dass statt den runden Klammer () eckige gesetzt gehören, aber irgendwie erlaubt mir Opera die eingabe von AltGr-Symbolen nicht, auch das at-Zeichen geht nicht. Muss mal sehen, was da schief läuft ...
Lieber hannes,
Ich verwende (da mir kein mod_rewrite zur Verfügung steht) in meinem Projekt $_SERVER('REQUEST_URI') um z.B. soetwas wie index.php/kategorie1/artikel2 zu verarbeiten.
Das ist ja auch richtig so.
Ich dachte schon daran dies zu verwenden, jedoch ist Ausgabe von soetwas im HTML-form-action ja genauso ungünstig, da man ja in die Adresszeile alles einschleusen könnte.
Klar kann man, aber dann landet man ja nicht bei Deinem Formular, oder? Man könnte auch mittels JavaScript oder einem Browserplugin den action-Wert im aktuell geladenen Dokument verändern. Und das, was der Server empfängt, kann man ja daraufhin untersuchen, ob da genau das drinnesteht, was darin stehen darf...
Liebe Grüße,
Felix Riesterer.
Hello Felix,
Ich dachte schon daran dies zu verwenden, jedoch ist Ausgabe von soetwas im HTML-form-action ja genauso ungünstig, da man ja in die Adresszeile alles einschleusen könnte.
Klar kann man, aber dann landet man ja nicht bei Deinem Formular, oder?
und genau DAS ist ja das Problem.
Man kann somit die Eingaben im Originalformular auf eine eigene Ressource umleiten.
Das Formular ist durch die einfache (unbehandelte) Benutzung von $_SERVER['PHP_SELF'] entführbar.
Das geht auch ohne JavaScript. Ich zeige hier aber extra nicht, wie.
Entweder man behandelt die Ausgabe kontextgerecht mit htmlspechialchars($_SERVER['PHP_SELF']) oder man benutzt die "kastrierte" Variante $_SERVER['SCRIPT_NAME'], die aber genaugenommen auch kontextsensitiv behandelt werden müsste, denn Ressourcenamen dürfen auf vielen Systemen auch Sonderzeichen enthalten.
Also wäre es meiner Meinung nach vernünftig, wenn man
htmlspecialchars($_SERVER['SCRIPT_NAME'])
benutzt.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Lieber Tom,
ich verstehe ehrlich gesagt das Problem nicht ganz. Entweder ich habe ein Script, das gesendete Daten verarbeitet, oder ich habe eben keines. Und wenn ich ein Formular an eine andere Ressource schicke, dann muss ich halt damit rechnen, dass diese Ressource eben damit nicht das tut (falls sie überhaupt etwas damit tut), was ich erwarten würde.
Umgekehrt muss ich eben bei einem Eingaben-verarbeitenden Script darauf achten, dass Missbrauch nicht ankommt, indem ich durch entsprechende Maßnahmen dafür sorge, dass nur diejenigen Daten verarbeitet werden, die für diese Ressource auch gedacht sind.
Wo ist jetzt das genaue Problem?
Liebe Grüße,
Felix Riesterer.
Hello Felix,
ich verstehe ehrlich gesagt das Problem nicht ganz.
Das macht nichts, darum unterhalten wir uns schließlich hier ;-)
Es gibt Typen, die schicken Anderen mal eben einen Link auf ein Forum per eMail.
Wenn diese Empfänger nun unbedarft sind und darauf klicken, dann öffnet sich vermutlich die entsprechend verlinkte Seite mit dem Anmeldeformular. Es handelt sich dabei um die Originalseite des jeweiligen Forums.
Tippt der Empfänger jetzt seinen Loginnamen und sein Passwort ein und sendet diese Daten per originalem Post-Button an, so denkt er, den Seitenbetreiber, so landen diese Daten beim "Abzocker"...
Das Formular wurde entführt.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Lieber Tom,
Es gibt Typen, die schicken Anderen mal eben einen Link auf ein Forum per eMail.
[...] landen diese Daten beim "Abzocker"...
das hat doch nix damit zu tun, was ich in meiner Webanwendung in ein Formular als action-Wert schreibe! Ob ich da $_SERVER['PHP_SELF'] oder $_SERVER['REQUEST_URI'] benutze, ist doch für das Entführen eines Formulars völlig schnuppe! Von der Sicht des serverseitigen Scripts ist das dann Jacke wie Hose. Und genau das war doch die Frage des OP, oder nicht?
Liebe Grüße,
Felix Riesterer.
Hello,
das hat doch nix damit zu tun, was ich in meiner Webanwendung in ein Formular als action-Wert schreibe! Ob ich da $_SERVER['PHP_SELF'] oder $_SERVER['REQUEST_URI'] benutze,
oder $_SERVER['SCRIPT_NAME'] ?
Es ist eben doch relevant.
Es geht nicht um das "Klauen" von Formularen und ablegen einer Kopie auf einem Banausenserver, sondern um das Umleiten der Antwort eines vom Original-Host beschafften Formulares.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hi!
Das Formular wurde entführt.
Deutsche Beamte haben Urlaub!
off:PP
Hallo
ich brauche eine Lösung, um ein Formular, das auf vielen Seiten vorkommt, immer auf die aktuelle Seite zu submitten.
Das $_SERVER('PHP_SELF') unsicher ist, ist mir klar.
$_SERVER["SCRIPT_NAME"]
ist nach heutigem Stand sicher und liefert den gleichen Wert, den $_SERVER['PHP_SELF']
im Normalfall zurück gibt.
Tschö, Auge
Grüße,
ich irre mich höchstwahrsceinlich, aber ist es nicht so, dass ein formular dessen action leer ist (action="") sich eben an die seite in der er eingebunden ist schickt?
MFG
bleicher
Grüße,
ich irre mich höchstwahrsceinlich, aber ist es nicht so, dass ein formular dessen action leer ist (action="") sich eben an die seite in der er eingebunden ist schickt?
Sofern kein <base href="http://example.com">
notiert ist.
MFG
bleicher
mfg Beat
Grüße,
Sofern kein
<base href="http://example.com">
notiert ist.
selbst dann - wenn man alles in eine zentrale index.php einbindet.
und das, vermute ich, ist recht verbreitete praktik.
MFG
bleicher
Hallo,
wäre dies dann nicht die einfachste Lösung?
Aber ist es, wenn man es genaunimmt valides (X)HTML, wenn man action leer lässt?
Und ist das zwingend so, dass an die soeben aufgerufene Seite submitted wird oder ist das Browserabhängig und ich sollte mich darauf nicht verlassen und lieber doch mein geprüftes $_SERVER('REQUEST_URI') verwenden?
Gruß
Hi,
wäre dies dann nicht die einfachste Lösung?
Ja.
Aber ist es, wenn man es genaunimmt valides (X)HTML, wenn man action leer lässt?
Ja.
Und ist das zwingend so, dass an die soeben aufgerufene Seite submitted wird
Ja.
oder ist das Browserabhängig
Nein. Und wenn doch, dann hat der Browser einen gravierenden Bug (und ich kenne keinen, der hier ein Bug hätte).
Gruß, Cybaer
Gibt es eine elegante Lösung um ein Formular, immer an die aktuelle Seite zu posten?
Ich würde $_SERVER['REQUEST_URI'] verwenden. Ist für mich die einzig logische Schlussfolgerung, denn es enthält die vom Browser angefragte URI, völlig egal was der Server und dein Skript dann intern so alles anstellen.
Gruß,
Andreas
Hallo,
ist dies für die Verwendung in HTML als action aber nicht genauso gefährlich wie $_SERVER('PHP_SELF')?
Man soll ja PHP_SELF ncht verwenden, da dies eben für solche Zwecke gefährlich ist ...
Oder worin besteht der "Gefahren-Unterschied" zwischen PHP_SELF und REQUEST_URI?
Gruß
P.S.: Wobei REQUEST_URI von mir ja eh auf plausibilität geprüft wird um doppelten Content zu verhindern und artikel2, der in kategorie1 steckt auch korrekt anzuzeigen bei index.php/kategorie1/artikel2.
Das wäre also für die Verwendung recht sicher ...
Gruß
Man soll ja PHP_SELF ncht verwenden, da dies eben für solche Zwecke gefährlich ist ...
Oder worin besteht der "Gefahren-Unterschied" zwischen PHP_SELF und REQUEST_URI?
Was bitte meinst du für eine Gefahr? PHP_SELF kenne ich nicht im Detail, ich könnte mir vorstellen, dass es eben bei Verwendung von mod_rewrite schlichtweg andere Werte liefert als die Server-Variable REQUEST_URI.
Gruß,
Andreas
Hello RFZ,
Was bitte meinst du für eine Gefahr? PHP_SELF kenne ich nicht im Detail, ich könnte mir vorstellen, dass es eben bei Verwendung von mod_rewrite schlichtweg andere Werte liefert als die Server-Variable REQUEST_URI.
Versuch es doch einfach mal, ein kleines Affenformular mit $_SERVER['PHP_SELF'] im action-Attribut des Form-Elementes aufzubauen und dann an die URL einfach noch ein paar Pfadinformationen anzuhängen.
http://example.org/affenformular.php/angehaengte/pfadinformation
Und schau Dir dann $_SERVER['PHP_SELF'] an.
Grob gesprochen gilt (Ich habe jetzt nicht überprüft, was mit dem Slash dazwischen geschieht):
$_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO']
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Versuch es doch einfach mal, ein kleines Affenformular mit $_SERVER['PHP_SELF'] im action-Attribut des Form-Elementes aufzubauen und dann an die URL einfach noch ein paar Pfadinformationen anzuhängen.
Jap, hab eben getestet, vor allem auch mit mod_rewrite. Weder $_SERVER['PHP_SELF'] noch $_SERVER['SCRIPT_NAME'] liefern dann (wie von mir erwartet) brauchbare Informationen.
Daher erst recht mein Vorschlag $_SERVER['REQUEST_URI'] zu verwenden, das tuts :)
Gruß,
Andreas
Hello,
Jap, hab eben getestet, vor allem auch mit mod_rewrite. Weder $_SERVER['PHP_SELF'] noch $_SERVER['SCRIPT_NAME'] liefern dann (wie von mir erwartet) brauchbare Informationen.
Daher erst recht mein Vorschlag $_SERVER['REQUEST_URI'] zu verwenden, das tuts :)
Na, dann muss ich das ja auch wieder auf meinen Zettel sezten :-)
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hi,
Ich verwende [...] in meinem Projekt $_SERVER('REQUEST_URI')
wenn das so ist, solltest Du Dein Projekt umschreiben. $_SERVER ist keine Funktion, die runden Klammern sind falsch.
Cheatah
P.S.: Mir ist klar, dass statt den runden Klammer () eckige gesetzt gehören, aber irgendwie erlaubt mir Opera die eingabe von AltGr-Symbolen nicht, auch das at-Zeichen geht nicht. Muss mal sehen, was da schief läuft ...
Hi!
aber irgendwie erlaubt mir Opera die eingabe von AltGr-Symbolen nicht,
Schreibst Du Deine PHP-Scripte mit Opera?
off:PP
Nein, aber meine Forenbeiträge.
Skripte mit vim.
Hi!
Skripte mit vim.
Mein aufrichtiges Beileid!
off:PP