Prüfen, ob Cookies gesetzt werden können.

TvP

Erfahrenes Mitglied
Hallo.

Ich habe ein kleines Buchungssystem, noch nicht ganz fertig. Da die Daten über mehrere Seiten gesammelt werden und ich diese nicht in der DB zwischenspeichern will, geh ich den Weg über den Cookie. Die Daten werden vorher codiert und gepackt, damit Sie nicht als Rohdaten missbraucht werden können.

Folgende Frage stellt sich jedoch: -Wie kann ich prüfen, ob Cookies gesetzt werden können.

Ich nutz derzeit ne nicht so elegante Lösung und setz nen TestCookie, wenn der User die Seite betritt. Den Inhalt bekomm ich beim nächsten mal Übergeben, weiß dann also nen Cookie kann gesetzt werden.

Habt ihr vielleicht nen eleganteren Weg?
SetCookie lieferte bei mir leider immer TRUE, unverständlicherweise.

OK, freu mich auf Antwort.
 
Speichere die Daten lieber serverseitig, etwa in PHP-Sitzungen.

Dass die setcookie()-Funktion immer true zurückliefert, hängt mit der Übertragung der Cookies selbst ab. Denn die setcookie()-Funktion setzt lediglich ein „Set-Cookie“-Header-Feld mit den Cookie-Daten in der Antwort-Nachricht. Ob der User Agent – also der Empfänger – jedoch aufgrund dieses Header-Feldes ein Cookie setzt und diesen bei der nächsten Anfrage mitsendet, ist allein seine Entscheidung.
 
Gibt es denn ein Limit für Daten, die ich über die Session speichern kann?
Muss dann wohl die Session über URL mitführen oder schauen, ob der Cookie gesetzt wurden, oder?
 
Wenn Du ueberpruefen willst ob die Cookies angenommen werden, dann schau Dir mal mein Tutorial Ueberpruefung von Cookies und JavaScript an.
Du musst ja im Grunde auch fuer die Session wissen ob Cookies angenommen werden, oder aber die SessionID immer im URL uebergeben. Wenn Du aber erst checkst ob Cookies ueberhaupt angenommen werden kannst Du bei Usern die Cookies annehmen die Session ueber Session-Cookies laufen lassen und bei den anderen wird die SessionID im URL uebergeben. So funktioniert es fuer alle und die mit Cookies haben es noch ein klein wenig sicherer (nicht, dass das wirklich viel waere, aber immerhin etwas).

Wie Gumbo schon sagte sollten temporaere Daten, also Daten die nur fuer die Dauer der aktuellen Sitzung benoetigt werden besser in Sessions gespeichert werden. Permanente Daten kann man dann in Cookies speichern. Zum Teil kann man permanente Daten auch in einer Datenbank oder auch Datei ablegen, aber das geht nicht bei allen Daten. Z.B. Daten fuer ein automatisches Login bei Besuch der Website kann man nicht serverseitig ablegen, da muessen Cookies herhalten.
 
Das hilf weiter. Ja, Sessions sind nicht ganz so sicher, wenn ich nen Prüfschlüssel reinpacke und die Session nur ne Gültigkeit von 15 min hat, sollte das den Sicherheitsfaktor merklich erhöhen, oder?
 
Du kannst in die Session schreiben was Du willst, es wird niemanden daran hindern die Session zu uebernehmen, denn Session-Daten werden alle auf dem Server gespeichert. Lediglich die SessionID geht zum Client.
15 Minuten ist immer noch eine recht lange Zeit, vor allem wird die Session ja immer wieder erneuert wenn wieder eine Seite aufgerufen wird. Du muesstest also einen Mechanismus einbauen der dafuer sorgt, dass die SessionID nach 15 Minuten zwangslaeufig gewechselt wird, natuerlich ohne Verlust der Session-Daten.
Auf meiner Website ist eine Session 5 Minuten gueltig, und mit einer eigene Garbage-Collection sorge ich dafuer, dass Session-Dateien die 5 Minuten nicht angefasst wurden geloescht werden.
 
Um die Session zu übernehmen, bräuchte er doch auf jeden Fall die ID, oder?
Es ist klar, dass alle abgelaufenden Sessions gelöscht werden müssen.

Mit session_cache_expire() setze ich doch die Verfallszeit, dann wird Sie vom Servergelöscht.

Dann hatte ich geplant, die Daten der Session nicht einfach so rauszugeben, sondern, wenn Sie erstellt wird, soll ein Prüfschlüssel erzeugt werden, mit dem ich dann Zugriff auf die Daten bekomme. Session clonen ist nicht das Problem, aber den Prüfschlüssel knacken denke ich, dass das in 15 min doch rel. unwahrscheinlich ist.

Oder gibt es da einen Denkfehler?
Wie löscht du denn abgelaufende Sessions aus dem Cache?
 
Zurück