Cookie löschen funktioniert nicht

  • Hey,


    ich erstelle bei einem Login ein Cookie. Nun wenn der User Logout klickt soll dem sein Cookie gelöscht werden. Jedoch wird dieser nie gelöscht. Egal was ich mache.
    Ich habe bereits sehr viel gegoogelt. Dies konnte aber nicht mein Problem lösen.


    So erstelle ich den Cookie:

    PHP
    if($verify){
           setcookie("username", $userData->username, time() + 3600);
           
    }

    So möchte ich ihn löschen:

    PHP
    //Class
    public function deleteCookie(){
        setcookie("username", "" , time() - 10000);
    }
    //
    
    if(isset($_POST["logout"])){
        $logout->deleteCookie();
    }

    Die Funktion gibt immer True zurück und trotzdem wird der Cookie nicht gelöscht.


    Was mache ich falsch?


    Grüße,

    Stef

  • Ich kann da nicht viel zu sagen ,aber zur Info bei mir geht es so

  • Hey,

    Welche Funktion? Ich sehe nicht, wo da ein Return-Wert existiert.

    Diese Funktion in der Klasse:

    PHP
    //Class
    public function deleteCookie(){
        setcookie("username", "" , time() - 10000);
    }
    //

    Das return habe ich nach dem testen wieder entfernt.


    Die richtige Klasse sieht so aus:

    So wird es ausgeführt:

    Auf der Index Page frage ich dann ab ob Cookie Username gesetzt ist und wenn ja lass ich eine Verlinkung zur Home-Page ausgeben.

    Diese wird immer ausgegeben.


    Das ist die Index Page:


    basti1012 :


    Wenn du bei time() ein + anhängst dann sagst du damit aus, dass der Cookie 1 Stunde laufen soll. So löschst du diesen ja nicht. Löschen kann man den laut meiner Recherchen nur wenn man time() - Zahl nimmt. Dann liegt der Cookie in der Vergangenheit und ist somit abgelaufen.


    Selbst das nützt bei mir nichts.


    Grüße,

    Stef

  • Bitte mal nachdenken, was daran nicht in Ordnung ist:

    Code
    $username = $_COOKIE["username"];
    if(!isset($username) || empty($username)){
            exit();
    }

    Und hier

    Code
    $logout = new Logout("username");
    if(isset($_POST["logout"])){
            $logout->deleteCookie();
            $logout->goToIndexPage();
    }

    musst du mir mal erklären, warum du ein new machst, wenn $_POST["logout"] nicht gesetzt ist.


    Und ein hoch gedrehtes Error-Reporting sehe ich auch nicht.

  • Hey,


    Bitte mal nachdenken, was daran nicht in Ordnung ist:

    Code
    $username = $_COOKIE["username"];
    if(!isset($username) || empty($username)){
            exit();
    }

    Was soll da denn nicht in Ordnung sein?


    Zitat

    Und hier

    Code
    $logout = new Logout("username");
    if(isset($_POST["logout"])){        
            $logout->deleteCookie();        
            $logout->goToIndexPage();
    }

    musst du mir mal erklären, warum du ein new machst, wenn $_POST["logout"] nicht gesetzt ist.


    Und ein hoch gedrehtes Error-Reporting sehe ich auch nicht.

    Ich habe es einfach so gemacht. Die Klasse wird nun im if-block instanziert.


    Error-Reporting habe ich bereits angeschaltet. Aber es kommt keine Meldung von diesem.


    Weiterhin besteht das Problem.


    Grüße,

    Stef

  • Hey,


    Was soll da denn nicht in Ordnung sein?

    Du greifst auf $_COOKIE["username"], egal ob die Variable gesetzt ist oder nicht.


    Und deshalb glaube ich auch nicht, dass du das Error-Reporting hochgedreht hast, denn sonst würdest du ein Meldung bekommen, wenn der Keks nicht gesetzt ist.


    Zitat


    Ich habe es einfach so gemacht. Die Klasse wird nun im if-block instanziert.

    Wenn du die Klasse nur in dem if-Block brauchst, dann mache auch in diesem das new!

  • Hey,


    ich habe die home-Seite noch nicht via Browser so geöffnet. Danke.


    Das alles ändert aber nichts daran, dass der Cookie gelöscht wird. Der Cookie wird einfach nicht gelöscht. Obwohl die Function ausgeführt wird.


    Auch wenn die Applikation so aussieht:

    PHP: home.php
    if(isset($_POST["logout"])){
    
            $logout = new Logout("username");
    
            if($logout->deleteCookie()){
                $logout->goToIndexPage();
            }
            
        }
    PHP: Logout Class
    public function deleteCookie(){
            
            if(setcookie($this->cookieName, "" , time() - 3600)){
                return true;
            } else{
                return false;
            }
        }

    wird die Funktion goToIndexPage ausgeführt. Das heißt der Cookie sollte nicht mehr existieren. Aber das tut dieser immernoch. Der wird einfach nicht gelöscht.


    Warum denn ?


    Grüße,

    Stef

  • Hey,


    Ich würde dir ja gerne helfen, befürchte aber, dass mein Beitrag deaktiviert werden könnte und daher eine Antwort relativ sinnlos wäre!

    Wenn Beiträge freundlich verfasst sind dann werden auch keine deaktiviert. Habe ich dir auch im Willkommensthema mitteilen wollen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!