header (Location ..
Gerd Gruber
- php
Hallo Leute,
hoffentlich kann mir hier jemand helfen.
Ich kenne den php-header-Befehl der Form z.b.:
header("Location: http://www.testen.de/test.php?var1=1&var2=2");
Ich muss aber in Location auf ein php-script umleiten, dass alle Variablen per POST-Methode erhalten möchte. Variablen übergaben per GET funktioniert bei diesem aufzurufenden script leider nicht.
Wie gebe ich dies in der header-Funktion an, Variablen per POST weiterzuschicken. Auf www.php.net habe ich leider nichts passendes gefunden
grüße an alle
Gerd
Hallo,
Wie gebe ich dies in der header-Funktion an, Variablen per POST weiterzuschicken.
Geht AFAIK nicht.
Mit dem Location-Header schickst Du ja dem Browser
die neue URL, und dieser verlangt dann diese Ressource
vom Webserver.
Du koenntest hoechstens mit PHP selbst eine POST-Anfrage
an den betreffenden Webserver starten und dann das
Ergebnis ausgeben.
Also mit PHP "Browser spielen".
In einem Benutzerkommentar zu fsockopen()
(such nach "connectToURL")
http://www.php.net/manual/de/function.fsockopen.php
hat es ein Beispiel mit GET. Ich wende es erfolgreich an,
sogar mit HTTP-Authentication.
Die HTTP-Anfrage kann wahrscheinlich auch auf POST angepasst werden.
(Du musst Dich halt in HTTP auskennen bzw. einlesen...)
Wenn der Betreiber des anderen Website damit nicht einverstanden ist,
solltest Du das ganze aber unterlassen.
Gruesse,
Thomas
Hallo Gerd,
Ich muss aber in Location auf ein php-script umleiten, dass alle Variablen per POST-Methode erhalten möchte. Variablen übergaben per GET funktioniert bei diesem aufzurufenden script leider nicht.
AFAIK können POST-Parameter nur von Formularen versendet werden, alles was über die URL läuft sind GET-Parameter. Nur mal so eine Idee als Workaround: Du könntest Deine Parameter in hidden fields eines Formulars eintragen das dann so nicht sichtbar ist und sich halt selbst verschicken müsste (muss wohl per Javascript gelöst werden). Ich weiss jetzt nur nicht ob es aus Sicherheitsgründen überhaupt möglich ist ein Formular ohne Userinput zu versenden? Ich weiss dass das ganze eine ziemliche Krücke ist aber Deine Anfrage ist auch ein wenig ungewöhnlich :-)
Hast Du keinen Zugriff auf das Script um dieses zu ändern? Wenn das Script sowohl GET- als auch POST-Parameter erwarten könnte gibt es da noch die Superglobale $_REQUEST, da stehen dann sowohl GET- als auch POST-Parameter drinne...
Wie gebe ich dies in der header-Funktion an, Variablen per POST weiterzuschicken. Auf www.php.net habe ich leider nichts passendes gefunden
Geht per header() AFAIK nicht?
Grüsse AndreD
Hallo,
Nur mal so eine Idee als Workaround: Du könntest Deine Parameter in hidden fields eines Formulars eintragen
Genau. Diese Loesung kam mir auch noch in den Sinn.
Das Formular darf IMHO durchaus sichtbar sein.
Zumindest als Submit-Button "Weiter..." oder so
stoert dieser Workaround ja kaum.
Dann wuerde das Formular ja wieder vom Browser selbst
per POST abgeschickt.
Dumm nur, wenn das verarbeitende Skript auf den Referer prueft...
Auf JavaScript sollte man sich nicht verlassen...
(Und ich hoffe, dass das automatische Abschicken
bei anstaendigen Browsern gar nicht moeglich ist.)
Gruesse,
Thomas
Hallo Thomas,
Genau. Diese Loesung kam mir auch noch in den Sinn.
Das Formular darf IMHO durchaus sichtbar sein.
Zumindest als Submit-Button "Weiter..." oder so
stoert dieser Workaround ja kaum.
Ja, ich meine ich hätte das auch schon mal als User irgendwann irgendwo so gesehen und benutzt.
Dann wuerde das Formular ja wieder vom Browser selbst
per POST abgeschickt.
Das war auch mein Gedanke dahinter ;-)
Dumm nur, wenn das verarbeitende Skript auf den Referer prueft...
Also wenn ich das so verstehe das man prüft - "wo kommt der den eigentlich her?" - hab ich noch nie gemacht. Wenn ich was schützen will generiere ich eine codierte (MD5) URI und setz die per header() ab, oder nicht?
Auf JavaScript sollte man sich nicht verlassen...
FullACK! Deshalb nutze ich das auch so gut wie nie, vielleicht mal in einem Adminbereich der Komfortabelität wegen ;-)
(Und ich hoffe, dass das automatische Abschicken
bei anstaendigen Browsern gar nicht moeglich ist.)
FullACK, Zumindest der Mozilla frägt bei immer nach, kann man aber auch denke ich ausschalten :-)
Grüsse AndreD
Hallo,
Dumm nur, wenn das verarbeitende Skript auf den Referer prueft...
Also wenn ich das so verstehe das man prüft - "wo kommt der den eigentlich her?" - hab ich noch nie gemacht. Wenn ich was schützen will generiere ich eine codierte (MD5) URI und setz die per header() ab, oder nicht?
Das wird nichts nuetzen.
Das Formular ist IMHO in jedem Fall
http://DeineSeite.example.org/formular.php
Von dort geht der Benutzer durch Klick auf "Submit" aufs Skript
http://FremdeSeite.example.com/skript.cgi
In diesem Skript steht - falls der Browser ueberhaupt
einen Referrer schickt u.s.w. - in der Variable $HTTP_REFERER
bzw. in PHP in $_SERVER['HTTP_REFERER'] die URL Deines Formulars.
Falls die FremdeSeite auf den Referrer prueft, schaut sie
hoechstwahrscheinlich, ob dessen URL mit
http://FremdeSeite.example.com/ oder http://www.FremdeSeite.example.com/
anfaengt (oder leer ist).
In allen anderen Faellen weigert sich das Skript,
die Daten auszugeben.
mfg
Thomas
P.S. Jaja, ich kenne
Warum ist es schlecht, mit dem Referer zu arbeiten?
http://www.dclp-faq.de/q/q-http-referer.html
Hallo,
In allen anderen Faellen weigert sich das Skript,
die Daten auszugeben.
Ok ist klar, ich dachte da an eine andere Art der Anwendung und nicht mehr an das gestellte Bsp. vom Gerd. Von da her: Vergiss es :-)
P.S. Jaja, ich kenne
Warum ist es schlecht, mit dem Referer zu arbeiten?
http://www.dclp-faq.de/q/q-http-referer.html
Hab nix gesagt und nur daran gedacht, hätte Dir es aber jetzt auch nicht irgendwie ala "...jaaaaa... und was ist mit: Warum ist es schlecht..." *gg* Die Seite ist super, klar... aber auch nicht das Evangelium, nää? :-)
Grüsse AndreD
Hallo,
Ok ist klar, ich dachte da an eine andere Art der Anwendung und nicht mehr an das gestellte Bsp. vom Gerd.
Und ich hatte uebersehen, dass Du nicht der OP (d.h. Gerd) bist. ;-)
[dclp-FAQ] Die Seite ist super, klar... aber auch nicht das Evangelium, nää? :-)
Nein. Ich kann es mir einfach nicht verkneifen, auf
diese FAQ hinzuweisen, insbesondere, weil dieses
Posting ja irgendwann mal im Archiv landet... ;-)
Freundliche Gruesse und einen geruhsamen Abdend,
Thomas
Hi Thomas,
Und ich hatte uebersehen, dass Du nicht der OP (d.h. Gerd) bist. ;-)
*gg*
Nein. Ich kann es mir einfach nicht verkneifen, auf
diese FAQ hinzuweisen, insbesondere, weil dieses
Posting ja irgendwann mal im Archiv landet... ;-)
Ich verweise auch immer wieder gerne darauf weil es halt einfach sehr gut den Sachverhalt darstellt, gerade auch für Einsteiger.
Freundliche Gruesse und einen geruhsamen Abdend,
Thomas
Ja danke, wünsch ich auch. Ich geh mal jetzt ne Runde Yoga machen dann wird der Abend richtig geruhsam ;-)
Grüsse AndreD