Bernd: Logout session & cookie problem!

Guten Abend,

ich habe ein Problem und zwar funktioniert bei meinem Login Script das Logout system nicht richtig! Es sieht wie folgt aus:

session_start();

$cookie1 = setcookie("userid","",time()-180);
$cookie2 = setcookie("userpw","",time()-180);

session_destroy();

Eigentlich sollte damit sicher gestellt werden das die beiden cookies und die aktuelle session zerstört werden! funktioniert bei 99% aller fälle, aber es gibt nunmal auch rechner bei denen das löschen des cookies nicht funktioniert, dabei wurde der rechner erst frisch formatiert (WinXP, internet explorer)! ich bin bei meinen nachforschungen auf: session_unset(); gestoßen, löscht wohl mehr daten als session_destroy();! was würdet ihr mir empfehlen zu benutzen und habt ihr evt. eine ahnung wieso

setcookie("userid","",time()-180);
setcookie("userpw","",time()-180);

nicht funktionieren kann? gibts da evt. allgemeine probleme?

bernd

  1. Hi,

    $cookie1 = setcookie("userid","",time()-180);
    $cookie2 = setcookie("userpw","",time()-180);

    Du loescht hier lediglich zwei Cookies, das hat nix mit Session zu tun. Warum die die Cookies benutzt anstatt Deine Sessiondaten in $_SESSION["myData"] zu speichern enzieht sich allerdings meinem Verständnis. Ein Cookie ist in einer Session normalerweise lediglich _eine_ Variante, um die Session-id zu transportieren.

    session_start(); // hält die Session
    $_SESSION["myVar"]; // speichert Sessionvariablen
    $_COOKIE["PHPSESSID"] // transportiert in der Server Standardkonfig die SessionID, alternativ auch hidden-inputs oder Get-Parameter.

    session_destroy()

    "löscht alle in Verbindung mit der aktuellen Session stehenden Daten. Mit der Session zusammenhängende globale Variablen und das Session-Cookie werden nicht gelöscht."

    ich bin bei meinen nachforschungen auf: session_unset(); gestoßen

    das sollte man nur verwenden, wenn man bei aelteren PHP-Versionen noch mit session_register arbeitet. Verwende statt dessen unset($_SESSION[...]) um bestimmte Session Variablen zu loeschen.

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. danke für die ganzen infos!

      nur was tun wenn trotz:

      setcookie("userid","",time()-180);
      setcookie("userpw","",time()-180);

      die cookies weiterleben?

      bernd

      1. Hi,

        nur was tun wenn trotz:

        setcookie("userpw","",time()-180);

        ich hoffe Du hast meinen Infos auch entnommen, dass dieser Ansatz Unsinn ist.

        die cookies weiterleben?

        cookies werden so geloescht. Dein Fehler muss woanders liegen.

        Gruesse, Joachim

        --
        Am Ende wird alles gut.
        1. das cookie wurde so gesetzt:

          setcookie('id', ''.$uid"].'', time()+60*60*24*30, '/');

          muss das '/' hinter der zeitangabe auch wieder mit rein, also so:

          setcookie("userid","",time()-180,"/")

          oder ist das egal, denn ich habe das gelesen:

          Cookies müssen mit den selben Parametern gelöscht werden, mit denen sie gesetzt wurden. Ist der value-Parameter ein leerer String oder FALSE und alle anderen Werte entsprechen dem früheren Aufruf von setcookie, wird das Cookie mit dem angegebenen Namen vom Client gelöscht.

          Bernd

          1. hi,

            das cookie wurde so gesetzt:
            setcookie('id', ''.$uid"].'', time()+60*60*24*30, '/');

            Exakt so?

            setcookie("userid","",time()-180,"/")

            oder ist das egal, denn ich habe das gelesen:

            Cookies müssen mit den selben Parametern gelöscht werden, mit denen sie gesetzt wurden.

            Der Name des Cookies dürfte einer der Parameter sein, für den das auf jeden Fall absolut erforderlich ist.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }