kannst Du im Cookie-Manager nicht die Verfallszeit ablesen?
"Gültig bis: Am Ende der Sitzung"
das heißt mozilla ändert das Verfallsdatum nicht
Ich hab's jetzt mit Mozilla 1.3 probiert und es funktioniert einwandfrei, sowohl mit "0" als auch "time()-3600" als Verfallsdatum. Kann also ein Fehler in älteren Mozilla-Versionen sein.
gibts eine andere Möglichkeit Cookies zu löschen??
Du kannst es beim Löschen des Cookieinhalts belassen, denn darum geht's ja letztenendes: Keine Logindaten, kein Login. Beim Beenden des Browsers sollte der Cookie dann in jedem Fall verschwinden.
Wobei mir auffällt: Deine Loginverwaltung scheint schlecht aufgebaut zu sein (zumindest dem Beispiel nach). Sogar Anfänger können am entsprechenden Ort auf ihrem Rechner eine passende Zeile eintragen, mit der ein Cookie Login und einem beliebigen Nutzernamen erzeugt und gesendet wird.
Ein Logincookie sollte niemals ausschließlich Daten enthalten, die jeder kennt oder erraten kann. Benutze nach erfolgreicher Anmeldung etwas in folgender Art:
$cookie=Array("nutzer"=>$nutzer,"passwort"=>md5($passwort));
setcookie("login",serialize($cookie));
md5() erzeugt eine Prüfsumme aus dem Passwort, die zwar eindeutig, aber nicht reversibel (entschlüsselbar) ist.
serialize() macht aus einer beliebigen Variable einen Text, der sich später wieder in eine Variable zurückwandeln lässt; auf diese Art und Weise ersparst Du dem Benutzer gegenüber zwei setcookie()-Aufrufen (jeweils für "nutzer" und "passwort") einen Cookie und entsprechende, mehrfache Nachfragen vom Browser.
Auf den dann abgerufenen Seiten wirst Du jedesmal Name und Passwort erneut prüfen müssen, denn es reicht wie bereits angedeutet nicht, nur nach der Existenz von Daten zu fragen. Die Daten müssen auch plausibel sein!
if (isset($_COOKIE["login"]))
{
$cookie=unserialize($_COOKIE["login"])
$passwort=passwort_aus_nutzer_datenbank_abfragen($cookie["nutzer"]);
$logged_in=(md5($passwort)==$cookie["passwort"]);
}
else
{
$logged_in=false;
};
Beachte bitte auch den Teil, der $logged_in explizit auf false setzt. Niemals unintialisierte Variablen benutzen!
Zu guter Letzt: Mit dem in PHP eingebauten Sessionmanagment fährst Du einfacher, weil es statt den tatsächlichen Logindaten nur eine Sessionkennung an den Browser ausgibt, die nicht vorhersehbar ist (sein sollte). Damit kannst Du Dir dann auch die obige Passwortgeschichte sparen und Dich nur auf den Nutzernamen verlassen.
Gruß,
soenk.e