Ermitteln, ob Cookies erlaubt sind
Kalle_B
- php
Hallöle,
wenn Cookies verboten sind, möchte ich den Hinweis ausgeben, dass Einstellungen für die nächste Sitzung nicht gespeichert werden.
Kann ich, bevor ich ein Cookie setzen kann, die Einstellung des Browsers ermitteln?
Habe mir mit echo phpinfo(); die Variablen im FF angeschaut, mal mit (Cookies akzeptieren mit Nachfragen), mal ohne Cookie- Erlaubnis und kann keinen Hinweis finden, dass der Browser seine Einstellung verrät.
Komisch, dass session.use_cookies in beiden Fällen "On" ist.
Ist es also richtig, dass ich mit einem Vorlauf- Programm ein Cookie setzen muss, um dann mit dem Hauptprogramm den Erfolg zu kontrollieren?
Lieben Gruß, Kalle
Hi,
Kann ich, bevor ich ein Cookie setzen kann, die Einstellung des Browsers ermitteln?
Du kannst auch, _nachdem_ Du einen Cookie gesetzt hast, nichts über die Einstellung des Browsers ermitteln. _Vor_ dem Setzen weißt Du jedoch noch weniger, nämlich nicht einmal, ob ein spezieller Cookie akzeptiert wird (bzw. wurde).
Komisch, dass session.use_cookies in beiden Fällen "On" ist.
use_cookies bedeutet nicht, dass sich PHP auf die Akzeptanz von Cookies verlässt, sondern nur, dass es bereit ist, es damit zu versuchen.
Ist es also richtig, dass ich mit einem Vorlauf- Programm ein Cookie setzen muss, um dann mit dem Hauptprogramm den Erfolg zu kontrollieren?
Ja. Wieso steht das eigentlich noch nicht in der FAQ?
Cheatah
Hi,
Ist es also richtig, dass ich mit einem Vorlauf- Programm ein Cookie setzen muss, um dann mit dem Hauptprogramm den Erfolg zu kontrollieren?
Ja.
Nein.
Damit ist ja nur überprüft, ob das Vorlauf-Programm-Cookie gesetzt wurde oder nicht.
Über irgendwelche später vom Hauptprogramm zu setzende Cookies sagt das absolut nichts aus (wie Du weiter oben ja selbst schriebst).
Nochmal für Kalle_B:
Ob ein Cookie akzeptiert wird, kannst Du nur dadurch herausfinden, indem Du es setzt und beim _nächsten_ Request, der vom selben (nicht gleichen) Browser kommt, überprüfst, ob es angekommen ist.
Ob irgendein anderes Cookie akzeptiert wird, kannst Du damit NICHT wissen. Auch nicht, ob das Cookie beim nächsten Request vom selben Browser wieder dabei sein wird. Einerseits kann die Einstellung für die Cookies im Browser zwischen 2 Requests geändert werden, andererseits gibt es ja nicht nur die Werte "erlaubt" und "verboten", sondern auch "frag den User für jeden einzelnen Cookie". Und die vorhandenen Cookies können auch gelöscht werden.
cu,
Andreas
Hi,
Damit ist ja nur überprüft, ob das Vorlauf-Programm-Cookie gesetzt wurde oder nicht.
Über irgendwelche später vom Hauptprogramm zu setzende Cookies sagt das absolut nichts aus (wie Du weiter oben ja selbst schriebst).
... und beim _nächsten_ Request ...
Kann ich den zwei Requests mit einem PHP- Durchlauf machen?
Habe jetzt folgende Lösung für mein Programmsystem:
Jeder Benutzer bekommt (sowieso) einen aktuellen ZugangsCode bei Anmeldung und dann das Menü angezeigt. Im Menü setze ich jetzt ein Cookie mit diesem Zugangscode.
Das Programm, das ein eigenes Cookie setzen möchte, fragt den Menü-Cookie ab und vergleicht mit dem Zugangscode. Bei demselben Code wird angenommen, dass das Programm selbst ein Cookie setzen kann, denn es läuft im selben Verzeichnis wie das Menü.
Falls dieser Trick versagen sollte, bekommt der User halt eine riesige, ungefilterte Liste.
Lieben Gruß, Kalle
Hi,
Kann ich den zwei Requests mit einem PHP- Durchlauf machen?
PHP erzeugt üblicherweise die Response. Die Requests kommen üblicherweise vom Browser.
(ja, PHP kann auch Requests machen, das hat aber mit der Kommunikation Browser - PHP-fähiger Server nichts zu tun)
Das Programm, das ein eigenes Cookie setzen möchte, fragt den Menü-Cookie ab und vergleicht mit dem Zugangscode. Bei demselben Code wird angenommen, dass das Programm selbst ein Cookie setzen kann, denn es läuft im selben Verzeichnis wie das Menü.
Hab ich doch grade schon geschrieben:
daraus, daß ein Cookie gesetzt werden konnte, kann man KEINERLEI Schlüsse bezüglich anderer Cookies ziehen.
Jeder einzelne Cookie kann verweigert werden.
cu,
Andreas
Hi,
Kann ich den zwei Requests mit einem PHP- Durchlauf machen?
I.A.: Ja. Schema: HTML-Code ausgeben, der einen 2. Request veranlaßt (z.B. OBJECT-Element mit PHP-Script als Source), darauf warten, daß das Ergebnis dieses Requests in eine Datei geschrieben wird (oder ein Timeout einen Fehlschlag abfängt), dann die Datei auswerten und weitermachen mit dem "normalen" HTML-Code.
Beispiel wo mit einem Sub-Request versucht wird, die JS-Fähigkeit des Browser zu ermitteln: Demo/Hauptscript/Subscript
Du kannst die Scripte allerdings so nicht selbst verwenden/anpassen, da die verwendeten Bibliotheksfunktionen nicht öffentlich sind.
Aber das Prinzip sollte hoffentlich klar werden ...
... nur daß das Subscript in deinem Fall halt nicht auf JS prüft, sondern nachschaut, ob der Cookie gesetzt ist (und das Ergebnis dann in die Datei schreibt, die dann vom Hauptscript ausgewertet wird.
Gruß, Cybaer
Hi,
Ist es also richtig, dass ich mit einem Vorlauf- Programm ein Cookie setzen muss, um dann mit dem Hauptprogramm den Erfolg zu kontrollieren?
Ja. Wieso steht das eigentlich noch nicht in der FAQ?
Weil du - oder auch ich oder sonst jemand - einen entsprechenden FAQ-Eintrag sicher in der Luft zerreissen wuerdest, wenn darin in Bezug auf eine auf HTTP basierende, ueber mehrere Requests gehende Client-Server-Kommunikation von "Vorlauf-Programm" und "Haupt-Programm" die Rede waere ...
*scnr*
MfG ChrisB