Cookies werden nicht gelöscht / Sessions nicht beendet

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Cookies werden nicht gelöscht / Sessions nicht beendet

    Hallo, also ich habe ein Problem, dass Cookies nicht gelöscht werden.
    Es geht um eine Art Community. Also man loggt sich ein und aus.

    Ich fange mal von vorne an, durch include wird auf jeder Seite von mir folgender Code ausgeführt:
    PHP-Code:
    // Schaut ob der User eingeloggt ist, bzw. ob ein Cookie vorhanden ist.
    // Ist ein Cookie gespeichert werden dessen Daten in die Session geschrieben.
    {
        
    // Wenn der User eingeloggt ist wird dennoch geprüft, ob er nicht gesperrt ist.
        
    if (isset($_SESSION['userid']))
        {
            
    $sql "SELECT locked FROM users WHERE id = '".$_SESSION['userid']."';";
            
    $result mysql_query($sql) or die (mysql_error());
            
    $row mysql_fetch_row($result);
            if (
    $row[0] == 0)
                return 
    false;
            else if (
    $row[0] == 1)
                return 
    "Dein Account ist zurzeit gesperrt!";
            else if (
    $row[0] == 2)
                return 
    "Du bist noch nicht von einem Lehrer freigeschaltet worden.";
            else if (
    $row[0] == 3)
                return 
    "Du bist noch nicht registriert.";
        }
        
    // Ein Cookie ist vorhanden. Der User wird anhand der gespeicherten Daten eingeloggt.
        
    else if (isset($_COOKIE['ADSportal']))
        {
            
    $sql "SELECT locked, gruppe, login
                   FROM users
                   WHERE id = '"
    .$_COOKIE['ADSportal']['id']."'
                   AND passwort = '"
    .$_COOKIE['ADSportal']['pass']."';";
            
    $result mysql_query($sql) or die (mysql_error());
            
    // Wenn die DB eine Zeile zurückliefert, stimmen Benutzername und Passwort.
            
    if (mysql_num_rows($result) == 1)
            {
                
    $user mysql_fetch_row($result);
                if (!
    $user[0])
                {
                    
    // Die Session wird erstellt.
                    
    $_SESSION['userid'] = $_COOKIE['ADSportal']['id'];
                    
    $_SESSION['username'] = $user[2];
                    
    $_SESSION['gruppe'] = $user[1];
                    
    // Loginzeit wird gespeichert und invalidlogins resettet
                    
    $sql "UPDATE users
                         SET lastlogin='"
    .time()."'
                         WHERE id='"
    .$_SESSION['userid']."';";
                    
    mysql_query($sql);
                }
                else
                    return 
    "Dein Account ist zurzeit gesperrt!";
            }
            else
            {
                
    // Das Passwort im Cookie stimmt nicht. Es wird mit logout() gelöscht.
                
    logout();
                return 
    "Du bist zurzeit nicht eingeloggt!";
            }
        }
        else
            return 
    "Du bist zurzeit nicht eingeloggt!";

    Das mache ich deshalb auf jeder Seite, um z.B. User immer sperren zu können, auch wenn sie sich zwischenzeitlich nicht ausloggen, bzw. damit man direkt seiten speichern kann, ohne von der login-seite zu beginnen.

    Klickt man nun auf den LogOut Link (inde.php?logout) wird folgender Code ausgeführt:

    PHP-Code:
    function logout() 
    // Destroyt die Session und löscht Cookies --> Der User ist ausgeloggt.

        unset(
    $_SESSION['id']);
        unset(
    $_SESSION['gruppe']);
        
    session_destroy();
        
    setcookie ("ADSportal[id]"""time() - 360000);
        
    setcookie ("ADSportal[pass]"""time() - 360000);

    (ach ja, die funktionen werden natürlich auch aufgerufen, so dumm bin ich nicht )

    Aber das merkwürdige ist: Man ist noch eingeloggt und die Cookies sind noch da! Bei einem Blick in Opera's Cookie verwaltung habe ich ADSportal[id] ADSportal[pass] und PHPSESSID.

    Mit dem Internet Explorer geht alles! Nur unter Opera will es nicht klappen!
    Was auch merkwürdig ist: Ich hatte das Script die ganze zeit lokal unter Apache mit PHP 5 laufen.
    Wollte das ganze jetzt online stellen und bei meinem Provider unter PHP 4.4.2 betreiben. Es klappt ja auch alles. Bis auf das Cookie löschen eben. Was mache ich falsch???

    was mir auch gerade auffällt:
    Den Cookie PHPSESSID, den PHP wohl automatisch wegen der Session generiert existiert nur in Opera. Für den Internetexplorer habe ich im Cookie-ordner nur eine *.txt mit den Daten von ADSportal[id] und ADSportal[pass].
    Wie verwaltet der IE denn dann die Sessions, wenn nicht über Cookies? Über die Url (get) wird auf jeden fall nichts übermittelt...

    Danke für eure Hilfe!
Lädt...
X