Avatar billede andreas13_fam Nybegynder
01. juli 2009 - 12:58 Der er 3 kommentarer og
1 løsning

Slet cookie

Jeg har problemmer med at få slettet mine cookies, i forbindelse med en bruger logger ud.

Når brugeren logger ud køres denne kode:
<?php

Class logudController Extends baseController {

public function index() {
    /*** dellet saved information ***/
            $this->registry->template->cookiestatus = '';
    //kill session
            $_SESSION = array();
            if (isset($_COOKIE[session_name()])) {
                setcookie(session_name(), '', time()-42000, '/');
            }
            session_destroy();

            //kill cookie
            if (isset($_COOKIE['login']))
            {
                setcookie("login[username]", "", time() - 3600);
                setcookie("login[hash]", "", time() - 3600);
                $this->registry->template->cookiestatus = '<br>Dit gemte login (cookie), er også blevet slette.';
            }
           
            //fake loginstatus
            $this->registry->loginstatus = false;
       

    /*** set a template variable ***/
        $this->registry->template->settitle('Logud');
        $this->registry->template->index(false);
    /*** add elements to the menu ***/   
        $this->registry->template->menu('Profil','Logud');
    /*** load the index template ***/
        $this->registry->template->show('index');
}

}

?> (altså logudController->index();)

Når en cookie bliver lavet køres denne kode:
                                    if (isset($_POST['save']))
                                    {
                                    setcookie("login[username]", $rows['brugernavn'], time()+(60*60*24*30));
                                    setcookie("login[hash]", $rows['hash'], time()+(60*60*24*30));
                                    }

Til hjælp til at teste udskriver login siden dette:
<?php
$layout->top('Farvel '.$username);
?>
    <strong>Du er nu logget ud.</strong><br>
    Der skal gøres opmærksom på at dette ikke er nødvendigt.
<?php
    echo $_CONTROL['cookiestatus'];
   
    $layout->subtitle('Print_r udskrift');
        echo '<pre>';
        print_r($_COOKIE);
        print_r($_SESSION);
        echo '</pre>';
       
$layout->bottom();
?>

Hvis det er en hjælp selv at logge ud og ind, kan det gøres her (http://mvc.netkogeren.a-mweb.dk) med...
brugernavn: eksperten
kodeord: test
Avatar billede mcb2001 Nybegynder
01. juli 2009 - 13:14 #1
du kører en kommando der sætter "udløbsdato" på cookien til at være for 14 dage siden.
Dette sletter ikke cookien før brugeren genstarter browseren - og slet ikke hvis browseren ikke sletter forgamle cookies.

Du kan overveje når du indlæser cookien at du tjekker udløb og eller kan du når du "sletter" den vælge at lægge en værdi ned i den der fortæller at det er ugyldig, således at næste gang brugeren kommer forbi, så kan dit system se at godt nok har han en cookie, men den er ugyldig.

Overvej også at cookies skal hedde det samme lige gyldigt hvornår de kaldes :-)
Avatar billede andreas13_fam Nybegynder
02. juli 2009 - 12:51 #2
Jeg prøvede det du sagde med fx at sætte en cookiens værdi til "logout", og lave en if (cookien == 'logout'). Men det virker ikke.

Har efterhånden samlet følgende oplysninger:
"Notesbog"
___________________________________________________

Okay efter et 5 timer, tror jeg da enlig jeg er kommet frem til flere ting/spørgsmål
1)    Køre jeg dette i forbindelse med logud:
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
Samtidig med jeg har cookies der gemmer brugernavn og "kodeord" udskriver den dette:
Array
(
)
Array
(
)

Altså visses COOKIE ikke, går jeg ind i indstillinger kan jeg se at cookies'ne stadig er der. Hmmm kan sletningen af sessioner have noget med det at gøre ?


Nulstiller alt og logger ind, og trykker af i husk login.

Køre denne gang:
            //kill session
            $_SESSION = array();
            if (isset($_COOKIE[session_name()])) {
                setcookie(session_name(), '', time()-42000, '/');
            }
            session_destroy();

            //kill cookie
            if (isset($_COOKIE['login']))
            {
                //setcookie("login[username]", "logout", time() - 3600);
                //setcookie("login[hash]", "logout", time() - 3600);
                $this->registry->template->cookiestatus = '<br>Dit gemte login (cookie), er også blevet slette.';
            }

Samme udskrift, hmm der skulle da være login[username] som er sat til logout og ligeledes med [hash]
Array
(
)
Array
(
)

I indstillingerne: Cookies'ne er der stadig og de er ikke blevet ændret.
Hmm, prøver lige at logge ud igen, nix samme resultat

Jeg kan desuden også konstatere at sletningen at sletningen af session ikke fejler noget.
Avatar billede andreas13_fam Nybegynder
02. juli 2009 - 16:42 #3
Når det problemet opstod fordi jeg bruger URL Rewriting. Så jeg skulle derfor angive sti til '/'
fx:
setcookie("login[hash]", "logout", time() - 3600, '/');
Men lig et svar så deler vi.
Avatar billede andreas13_fam Nybegynder
22. august 2009 - 21:37 #4
Ligger et svar, du er velkommen til at ligge et selv.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester