Hallo,
Vorab: münzchen, bist Du verwirrt?
@Andreas...
Ich weiß, das Thema ist durch, aber ich möchte doch darauf hinweisen dass es für Sessions auch andere Anwendungsgebiete gibt außer einer Authentifizierung, Cookies haben Vor- und Nachteile, genau so URL-Rewriting.
Das musst Du mir mal näher erklären! Der einzige Zweck der Session ist doch, den Client eindeutig wiederzuerkennen von Request zu Request, um ihm die richtigen Daten zuzuleiten. Was sollte denn sonst der Anwendungsfall für Sessions sein? Und diese Wiedererkennung kann man nun ganz einfach halten, man kann vorher darüber nachdenken, was man tut, und man kann auch den durchaus vertretbaren Aufwand einer Echtheitsprüfung für die Session durchführen. Das hat alles noch nichts mit einer "Authentifizierung" von in Nutzerkonten registrierten Nutzern zu tun.
Die kann man zusätzlich durchführen.
session_destroy(); // Sessiondatei löschen
setcookie("PHPSESSID"); // Cookie auf dem Client vernichten
Ersterer Befehl ist der von PHP vorgesehene um eine Session zu beenden(Die Session-Daten auf dem Server zu löschen), ob Cockie oder URL-Rewriting, letzterer löscht den Cockie, was wie Du richtig sagst bei Cockies der sicherste Weg ist, da destroy in Ausnahmefällen nicht korrekt funktioniert, siehe
http://www.php3.de/manual/de/function.session-destroy.php
http://www.dclp-faq.de/q/q-sessions-loeschen.html
Ja ich weiß, darum habe ichs gesagt.
Wenn man den Cookie auf dem Client nicht ebenfalls vernichtet, ist der in $_COOKIE["PHPSESSID"] beim nächsten Request wieder da und es wird, mangels vorhandener Sessiondatei eine neue Sessiondatei unter der alten Nummer angelegt.
ja und? Es kommt drauf an wozu und wie man die Session verwendet. PHP erstellt nur eine neue Session nach einem session_start(), was aber nicht vorkomen sollte wenn man eine Session gelöscht hat, es sei denn man möchte explizit eine neue, leere Session starten, dann ist es auch egal das es dieselbe SessionID ist. Bei einer Authentifizierung gelten andere Regeln - ich weiß - aber dazu werden Sessions eher selten verwendet.
Ich möchte niemals gezwungen sein, mein Leben oder auch nur meine Gesundheit einem DEINER Programme anvertrauen zu müssen. Deine ganzen Aussagen zui diesem Thema deuten immer wieder darauf hin, dass Du Dir über Fehlertoleranz noch nie Gedanken gemacht hast, oder aber das Wort falsch verstanden hast.
Also nochmal zum Mitschreiben: Programme mit hoher Fehlertoleranz sind solche, die auf Übertragungsfehler, Benutzerfehler etc. intelligent reagieren können und es bedeutet NICHT, dass jede Schlampigkeit oder Faulheit des Programmierers zu tolerieren ist.
Meiner Meinung nach verwirren derartige Aussagen jemanden der sich nicht so sehr mit der Materie auskennt wie Du.
Meiner Meinung nach kann Derjenige ja nachfragen, wenn es ihn verwirrt hat. Wie "er" (also Münzchen, du bist hier gemeint) ja unschwer erkennen kann, bin ich öfer hier.
Ermahnende Grüße aus http://www.braunschweig.de
Tom
Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.