Ankündigung

Einklappen
Keine Ankündigung bisher.

$_COOKIE["xy"] löschen?

Einklappen

Neue Werbung 2019

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

  • $_COOKIE["xy"] löschen?

    Hallo Zusammen,

    folgendes Problem: ich speicher in einem $_COOKIE den Usernamen nach erfolgreichem Login ab.

    Bei dem Logout sollte das Cookie gelöscht werden, so dass theoretisch bei einem erneuten Login mit einem ANDEREN User das COOKIE erneut erstellt werden kann
    - funktioniert aber nicht!

    Er löscht den Befehl nicht, sondern gibt für die aktuelle Userausgabe im System immer noch den alten User aus, nicht der, der eingeloggt ist.

    Nach Recherche habe ich gelesen, dass es kein richtigen Befehl dafür gibt, ein COOKIE zu löschen - daher setzt man die Zeit einfach in die Vergangenheit und der COOKIE wird dadurch unbrauchbar: gelesen und auch gemacht!

    Will trotzdem nicht funktionieren. Bitte schaut mal rüber und ich hoffe ihr könnt mir sagen, woran es nur liegen kann...

    PHP-Code:
    if(isset($_POST["btn_login"])){
        
    $username $_POST["txt_username"];
        
    $password md5($_POST["txt_password"]);
        if(
    check_login($username,$password)==1){ 
            
    $_SESSION['index'] = true;
            
    setcookie("username",$username,0);
            
    set_user_active($username);             
        }else{
            
    $_SESSION['index'] = false;    
        }
    }

    if(isset(
    $_POST["btn_logout"])){
            
    $username   get_active_username();
            
    set_user_deactive($username);
            
    setcookie("username",$usernametime() - 3600); --> ??? hier läuft wohl was falsch <--
            unset(
    $_SESSION['index']);
            
    session_destroy();
            
    $_SESSION['index'] = false;


    Danke!


  • #2
    wieso machste cookies unmd sessions?

    Kommentar


    • #3
      Like other headers, cookies must be sent before any output from your script
      (http://www.php.net/manual/en/function.setcookie.php)

      Hast du das auch beim "Löschen" des Cookies berücksichtigt?

      Kommentar


      • #4
        Zitat von moma Beitrag anzeigen
        wieso machste cookies unmd sessions?
        Also mit Sessions wollte ich nun halt überprüfen, ob der User eingeloggt ist.
        Und mit Cookie wollte ich den Usernamen festhalten, um auf den später in einer Funktion draufzuzugreifen...

        Sehr ungünstig, ich weiß, daher hätte ich auch gerne Verbesserungsvorschläge.
        Konnte es leider bisher nicht besser lösen - Loginsystem habe ich mich nie mit beschäftigt

        Kommentar


        • #5
          Zitat von monolith Beitrag anzeigen
          (http://www.php.net/manual/en/function.setcookie.php)

          Hast du das auch beim "Löschen" des Cookies berücksichtigt?
          ja hab ich

          Kommentar


          • #6
            Problem gelöst... lag an den .-> " "

            Noch ne Frage zu dieser Function:
            PHP-Code:
            function get_active_user(){
            return 
            $_COOKIE["username"];

            Bekomme beim erfolgreichen Login ein Undefined index: username in ...
            Beim erneuten Aufruf der Startseite (weiterhin eingeloggt) funktioniert die Funktion... Als wenn das Cookie erst beim nächsten Aufruf verfügbar ist.
            Kann mir jemand sagen, wie ich das Problem umgehen kann?

            Kommentar


            • #7
              Mit if (isset($_COOKIE['username'])) { ... } ?

              Kommentar


              • #8
                Zitat von monolith Beitrag anzeigen
                Mit if (isset($_COOKIE['username'])) { ... } ?
                Ja, aber ich möchte ja, dass das Cookie auch beim ersten Aufruf zur Verfügung steht und nicht erst beim zweiten Aufruf...

                Kommentar


                • #9
                  Warum? Primär nutzt man Sessions. D. h. beim ersten Aufruf speicherst du deine Daten in der Session und im Cookie (im Cookie so wenig wie nötig!) und nutzt dann aber immer die Session. Beim nächsten Aufruf, wenn dann ein Cookie existiert, liest du die Daten daraus aus und speicherst sie in der Session - und nutzt dann ebenfalls wieder die Session.

                  Ein Cookie muss über das Netz zum User Client (Browser) übertragen werden. Dort liegt er dann, im Speicher des PCs oder auf der Festplatte, und der User kann auf ihn zugreifen und versuchen ihn zu manipulieren. Da du weder das willst, noch die Netzwerkverbindung unnötig belasten, noch die Festplatte des Users füllen, versuchst du Cookies möglichst klein zu halten. Z. B. speicherst du bei einem eingeloggtem User nur die User-ID und vielleicht noch ein Sicherheitstoken, mehr aber nicht.

                  Kommentar


                  • #10
                    Problem gelöst... lag an den .-> " "
                    Unsinn.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Ja, aber ich möchte ja, dass das Cookie auch beim ersten Aufruf zur Verfügung steht und nicht erst beim zweiten Aufruf...
                      Ja, geht aber nicht.
                      --

                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                      --

                      Kommentar

                      Lädt...
                      X