Kann man prüfen, ob setcookie() erfolgreich war?
Peter
- php
Hi,
würde gerne wissen, ob man überprüfen kann, dass ein setcookie() Erfolg hatte. Ich habe das mit ausgeschalteten Cookies usw. überprüft, aber der Rückgabewert von setcookie() ist immer 1 - egal ob das Cookie gesetzt wurde oder nicht. Am Aufruf liegt es nicht, da das Cookie ansonsten einwandfrei funktioniert. Gibt es einen anderen Weg oder wo könnte sich ein Fehler verbergen?
Bin dankbar für jegliche Denkanstöße. :)
Gruß,
Peter
Moin,
würde gerne wissen, ob man überprüfen kann, dass ein setcookie() Erfolg hatte. Ich habe das mit ausgeschalteten Cookies usw. überprüft, aber der Rückgabewert von setcookie() ist immer 1 - egal ob das Cookie gesetzt wurde oder nicht. Am Aufruf liegt es nicht, da das Cookie ansonsten einwandfrei funktioniert. Gibt es einen anderen Weg oder wo könnte sich ein Fehler verbergen?
Nein das geht so einfach nicht da HTTP Anfrage-Antwort-basiert arbeitet: http://forum.de.selfhtml.org/?m=42434&t=7675. Indem Moment in dem das Cookie gesendet wird, sendet der Server seine Antwort und der Browser hat nichts mehr zu sagen. Danach ist der gesamte Request vorbei und dein Skript wird beendet.
Die einzige Möglichkeit zu überprüfen ob das Cookie erfolgreich gesetzt wurde, wäre eine neue Seite zu laden, zum Beispiel mit header("Location: blabla.php");, und dann zu sehen ob der Browser das Cookie mitschickt.
--
Henryk Plötz
Grüße aus Berlin
Vielen Dank für die Antwort! Jetzt weiß ich bescheid. :)
Gruß,
Peter
Moin,
würde gerne wissen, ob man überprüfen kann, dass ein setcookie() Erfolg hatte.
Nein das geht so einfach nicht da HTTP Anfrage-Antwort-basiert arbeitet: http://forum.de.selfhtml.org/?m=42434&t=7675. Indem Moment in dem das Cookie gesendet wird, sendet der Server seine Antwort und der Browser hat nichts mehr zu sagen. Danach ist der gesamte Request vorbei und dein Skript wird beendet.
Die einzige Möglichkeit zu überprüfen ob das Cookie erfolgreich gesetzt wurde, wäre eine neue Seite zu laden, zum Beispiel mit header("Location: blabla.php");, und dann zu sehen ob der Browser das Cookie mitschickt.
Eine Weitere Frage dazu:
Wenn eine Session gestartet wurde und der Browser keine Cookies zuläßt, wird an interne Verweise automatisch die Session-id angehängt (bei aktiviertem --enable-trans-sid). Volglich müßte das Session-Management doch eine Möglichkeit haben, festzustellen, ob ein Cookie gesetzt wurde oder nicht. Ich weiß zwar nicht, wie dies geschieht, aber es funktioniert auf jeden Fall
--
Henryk Plötz
Grüße aus Berlin
Moin!
Eine Weitere Frage dazu:
Wenn eine Session gestartet wurde und der Browser keine Cookies zuläßt, wird an interne Verweise automatisch die Session-id angehängt (bei aktiviertem --enable-trans-sid). Volglich müßte das Session-Management doch eine Möglichkeit haben, festzustellen, ob ein Cookie gesetzt wurde oder nicht. Ich weiß zwar nicht, wie dies geschieht, aber es funktioniert auf jeden Fall
Wenn du mal genau hinsiehst, passiert folgendes:
Die erste Seite bewirft den Browser mit einem Cookie, und zusätzlich haben alle Links die SID am Link drankleben.
Wenn das Cookie erfolgreich gesetzt werden konnte, dann fehlt die SID ab der zweiten Seite, ansonsten wird auf Seite 2 wieder mit einem Cookie geworfen, und alle Links haben die SID hintendran kleben, und alles ist so, wie auf Seite 1 beim ersten Besuch auch.
PHP kriegt also die Session-ID entweder aus dem Cookie, oder wahlweise als GET-Parameter (dann z.B. in der URL) oder als POST-Parameter (<form>-Tags werden automatisch um ein <input type="hidden"> ergänzt). Die Cookie-Methode ist dabei die beste, weil sie den Browser für alle Verbindungen unverwechselbar macht, die POST- und GET-Varianten sind darauf angewiesen, daß sie auch durchkommen, was bei Frames möglicherweise schwierig werden könnte.
In diesem Zusammenhang dürfte interessant sein, die Ausgabe von phpinfo(INFO_VARIABLES); zu studieren, da wird nämlich genau aufgeführt, welche Daten PHP woher vom Browser hat (Die Tabelle ist Bestandteil von phpinfo();).
- Sven Rautenberg
Moin moin <--- und sorry, daß mein letztes Posting ohne menschliche Umgangsformen auskommen mußte, bin gerade aufgestanden ;-)
Was gibt es schöneres als etwas dazuzulernen, vielen Dank Sven für die vielen Male, wo du meine (hoffentlich nicht allzu dummen) Fragen beantworten konntest.
KLASSE FORUM
Euer (von Chats, Bords u.ä.) gelangweilter Heizer