Hello,
Zu deinem hier beschriebenen Problem hat dir Tom ja bereits geschrieben - in deinem PHP-Script löschst du stets zuerst alle Cookies, folglich auch das Session-Cookie, da dieses auch nichts anderes als ein normales Cookie ist.
Ja hat er, aber ich glaube ihr habt mich falsch verstanden. Daher nochmal:
User hat Cookies im Browser abgestellt. Wenn PHP nun die Option bietet durch "session.use_only_cookies" heisst das für mich soviel wie, wenn der User keine Cookies akzeptiert, hat er Pech gehabt. Dann wird auch keine Session Datei angelegt, bzw. wenn angelegt dann auch wieder sofort gelöscht.
Stattdessen erhalte ich mit jedem Aufruf eine neue Datei. Das halte ich für Fatal, denn ich könnte dieses Verhalten ausnutzen indem ich Millionen von Session Dateien in den TMP Ordner produzieren lassen könnte, und das bevor der GC greift.
Und genauso habe ich es Dir auch beschrieben.
Also nochmal ganz langsam zum Mitmeißeln :-) :
[Start]
Wenn Du "session_start()" aufrufst, schaut PHP nach, ob es einen Cookie unter dem eingestellten Bezeichner ( = session_name() ) im $_COOKIE-Array findet. Es schaut auch nur noch dort nach, weil Du ja "session.use_only_cookies" auf true gesetzt hast.
Ist ein Cookie vorhanden, wird nach einer dazu passenden Session-Datei gesucht und bei Erfolg die angefangene Session fortgestzt. Ist kein passender Cookie vorhanden, wird ein neuer ausgewürfelt, dieser in die response-Header eingestzt, eine _neue_ Session-Datei angelegt und darin bei Scriptende das $_SESSION-Array das eben gerade noch aktuellen Scriptes abgespeichert.
Mit der response landet der Cookie nun erst beim Client. Dieser nimmt ihn aber nicht an (= speichert ihn nicht ab!). Folglich kann beim nächsten Request an die Domain auch kein Cookie mitgeschickt werden und das Spiel beginnt wieder bei [Start].
Liebe Grüße aus dem Cyberspace
Tom vom Berg