Nach Formulareingaben erst Login

joergdeymann

Grünschnabel
Situation:
Ich habe ein Formular offen, schicke es ab mit OK.
Wenn ich eingelogged bin, will ich das Formular normal abschicken.
Alles klar bishier, funktioniert auch.
Wenn ich nicht eingelogged bin, dann möchte ich mich erst einloggen können
und dann das Formular mit den eingegebenen Text dann abschicken.

Wie kann ich dieses erledigen ?

Meine Ansatz,
ich habe versucht den Text mit get weiterzugeben, auch mit urlencode. Das klappt aber nicht. Weil die Daten nicht richtig interpretiert werden.
1. Aufruf des loginscripts mit header("location:login.php?text=urlencode($text)")
2. Aufruf aus dem loginscript; header("location:ursprung.php?text=urlencode($text)")
das klappt aber nicht. Außerdem gibt es bestimmt eine bessere Lösung, als eine POST-Anweisung als Get weiterzugenen und dann hinterher wieder als get auszulesen.

Eine Idee.
javascript bietet ein history.back() oder history.go() an. Hiermit kommt man zu den Daten.
Ich will aber bei PHP bleiben.
 
Soweit ich weiß, kann man bei heade("Location..."); keine Variablen in der URL übergeben. Mach es doch mit Sessions. Oder schreib die Daten temporär in eine Datei.
 
Danke für Deine Antwort:
Den Text in eine Session zu schreiben ist mir zu unsicher, da es ja Cookies sind, die jeder auslesen kann.
Das mit der temporären Datei ist eine gute Idee, auf die ich vielleicht selber hätte kommen können. :)
 
PHP-Sitzungen haben nicht zwangsläufig etwas mit Cookies zu tun. Denn Cookies sind nur möglicher Übertragungsweg der Sitzungs-ID. Genau so gut kann die Sitzungs-ID auch per Get- oder Post-Methode übergeben.
PHP-Sitzungen sind übrigens auch nicht anderes als ein Weg um serverseitig Werte temporär zu speichern. Der Vorteil gegenüber eigener temporärer Dateien ist nur, dass die Authentifizierung automatisch geschieht.
 
Man muss die Session-ID doch nicht immer mitgeben, oder? Da gibt's doch glaub ich eine Einstellungsmöglichkeit... session_transid oder so in der Richtung. Gumbo wird dich bestimmt aufklären können :P
 
Super, so viele positive Antworten, hier bin ich richtig,hoer fühl ich mich wohl :)

@Sven Mintel
Das mit dem simulierten POST ist sehr interresant, das werde ich mir mal anschauen

@Gumbo
Dann kann man die Werte der Sessionvariablen nicht sehen ?, wenn man das Sessioncookie öffnet ? Oder wird das Sessioncookie nur auf dem Server gespeichert ?
Dann ist alles sicher.

@mAu
Das ist ne Servereinstellung , an der ich nichts ändern kann glaube ich. PHP wird so oder anders compiliert. anber wenn Gumbo noch genau erklären kann wie das geht, wäre es genial.
 
joergdeymann hat gesagt.:
Dann kann man die Werte der Sessionvariablen nicht sehen ?, wenn man das Sessioncookie öffnet ? Oder wird das Sessioncookie nur auf dem Server gespeichert ?
Dann ist alles sicher.

In dem Session-Cookie wird nur die Session-ID gespeichert, die gespeicherten Daten selbst liegen auf dem Server und werden dann anhand dieser Session-ID ermittelt.

Auf jeden Fall ist es sicherer, die Session über Cookies aufrecht zu erhalten...
Beispiel:
Du loggst dich in ein Forum ein und klickst dort auf einen Link zu einer externen Adresse.
Der Betreiber der externen Adresse schaut in seinen Logfiles nach dem HTTP-Referer, und kann deine Session übernehmen, da im Referer auch deine Session-ID steht.
 
mAu hat gesagt.:
Soweit ich weiß, kann man bei heade("Location..."); keine Variablen in der URL übergeben. Mach es doch mit Sessions. Oder schreib die Daten temporär in eine Datei.

Hm, komisch. Bei mir hat das immer funktioniert. Früher habe ich so ein Fehlermeldesystem gebaut. Mitlerweile nutze ich zwar aus Sessions, aber bei mir hat das immer funktioniert.
 
Du hast bloß den Parameterwert falsch deklariert:
PHP:
header('Location:login.php?text='.urlencode($text));
 
Zurück