Avatar billede asand Nybegynder
12. juli 2003 - 13:18 Der er 19 kommentarer og
1 løsning

Problemer med at test cookie

Hej
Jeg har nogle problemer med at teste nogle cookies. Når man logger ind, skal der sættes en cookie, der hedder 'rosenholm', og skal indeholde 'loggedin'. Det virker tilsyneladende godt nok.
Så skal de forskellige beskyttede sider teste, om cookie'en er sat til 'loggedin' før resten af siden vises. Men det virker ikke!

Jeg har:
---<?php
@$user = $_POST["user"];
@$pass = md5($_POST["pass"]);
require("users.php");

@$Brugernavn = $$user;
$RigtigePassword = $Brugernavn[7]; //hvor password'et er lagt ind i f.eks. $asand[7].

if($pass == $RigtigePassword)
    {
    setcookie("rosenholm","loggedin",time()+10);
    }
?>
---

og så på de beskyttede sider:
---
<?php
if($_COOKIE["rosenholm"] == 'loggedin')
    {
    echo "Du er logget ind!";
    }
else
    {
    echo "Du er ikke logget ind";
    }
?>
---
Jeg får fejlen:
---
Notice: Undefined index: rosenholm in C:\Apache\Apache2\htdocs\Rosenholm\login_cont.php on line 2
---

Hvad er fejlen, og hvad kan jeg gøre for at undgå den??

-ASand
Avatar billede googolplex Novice
12. juli 2003 - 13:21 #1
Cookien er så vidt jeg ved ikke tilgængelig på den side den bliver sat !
Avatar billede googolplex Novice
12. juli 2003 - 13:22 #2
Brug $_SESSION[''] i stedet.
Avatar billede asand Nybegynder
12. juli 2003 - 13:25 #3
Det er ikke det, der er problemet. Kan heller ikke hente cookien på andre sidder.
Avatar billede googolplex Novice
12. juli 2003 - 13:26 #4
Ja, ok, jeg havde ikke lige set det VAR på forskellige sider, sorry :(
Avatar billede asand Nybegynder
12. juli 2003 - 13:26 #5
helt ok!
Avatar billede googolplex Novice
12. juli 2003 - 13:26 #6
Men din cookie er jo kun sat til at være 10 sekunder ?
Avatar billede asand Nybegynder
12. juli 2003 - 13:28 #7
joh, men det burde være ligemeget. Det er bare fordi, jeg ikke gider sidde at vente en time (eller noget), når jeg tester siderne.
Avatar billede googolplex Novice
12. juli 2003 - 13:36 #8
Har du prøvet med:

if(isset($_COOKIE['rosenholm']) i stedet ?
Avatar billede asand Nybegynder
12. juli 2003 - 13:50 #9
Så får jeg ikke nogle notices, men får bare at vide, at jeg ikke er logget ind ligemeget, hvad jeg skriver.
Avatar billede asand Nybegynder
12. juli 2003 - 13:52 #10
okay, det virker fint! Det var bare det med, at man ikke kunne bruge cookien på den side, man loader! Tak for hjælpen. Læg et svar.

-ASand
Avatar billede googolplex Novice
12. juli 2003 - 13:54 #11
Virkede det første jeg skrev så ?
Avatar billede asand Nybegynder
12. juli 2003 - 13:56 #12
Næh, men er ikke så stiv i sessions, så hvis du forklarer lidt mere kan det være, at det gør. Skal jeg bare sætte den samme cookie, og så hente den med $_SESSION?
Avatar billede googolplex Novice
12. juli 2003 - 14:01 #13
I stedet for:

if($pass == $RigtigePassword)
    {
    setcookie("rosenholm","loggedin",time()+10);
    }

Så kan du skrive:

if($pass == $RigtigePassword)
    {
    $_SESSION['brugernavn'] = $Brugernavn;
    }

Så på dine sider:

if(isset($_SESSION["brugernavn"]))
    {
    echo "Du er logget ind!";
    }
    else
    {
    echo "Du er ikke logget ind";
    }

Men det lægger ingen cookien hos brugeren.
Avatar billede asand Nybegynder
12. juli 2003 - 14:04 #14
Ja, ok, det virker. Har også lige prøvet det selv. Sejt! Men, forsvinder Session'en efter noget tid? når man lukke browseren? når man forlader serveren? Hvad sker der??

-ASand
Avatar billede googolplex Novice
12. juli 2003 - 14:12 #15
Når du lukker browseren.

Jeg sidder selv og bøvler med cookies af den grund !!
Avatar billede googolplex Novice
12. juli 2003 - 14:50 #16
Jeg har endelig fået mit eget til at virke, det bruger både sessions og cookies (hvis brugeren sætter hak så sætter den en cookie).

Hvis du er interesseret kan jeg smide koden her ?
Avatar billede asand Nybegynder
12. juli 2003 - 16:14 #17
Jeg har fået mit til at virke udelukkende ved cookies - jeg lavede en redirect, hvor cookie'sne bliver sat, og så kan de bruges.
Men smid bare koden. Det er sikkert interessant.
Avatar billede googolplex Novice
12. juli 2003 - 16:18 #18
// Første del

session_start();

if (isset($_COOKIE['brugernavn'])) {
    setcookie("brugernavn", $_COOKIE['brugernavn'], time()+31536000);
    aabn_forbindelse();
    $sql = "SELECT * FROM brugere WHERE BINARY brugernavn = '" . $_COOKIE['brugernavn'] . "'";
    $resultat = mysql_query($sql);
    luk_forbindelse();
    if (mysql_num_rows($resultat) > 0) {
        $raekke = mysql_fetch_assoc($resultat);
        foreach ($raekke as $noegle => $vaerdi) {
            $_SESSION[$noegle] = $vaerdi;
        }
    }
}

if (isset($_POST['login'])) {
    aabn_forbindelse();
    $sql = "SELECT * FROM brugere WHERE BINARY brugernavn = '" . $_POST['brugernavn'] . "' AND BINARY kodeord = '" . md5($_POST['kodeord']) . "'";
    $resultat = mysql_query($sql);
    luk_forbindelse();
    if (mysql_num_rows($resultat) > 0) {
        $raekke = mysql_fetch_assoc($resultat);
        foreach ($raekke as $noegle => $vaerdi) {
            $_SESSION[$noegle] = $vaerdi;
        }
        if(isset($_POST['autologin']) && strlen($_POST['autologin']) != 0) {
            setcookie("brugernavn", $_POST['brugernavn'], time()+31536000);
        }
    }
}

if(isset($_POST['logout'])) {
    setcookie("brugernavn");
    session_unset();
    session_destroy();
}

// Anden del er min login boks

if (isset($_SESSION['brugernavn'])) {
    $boksindhold = "
    Du er logget ind som <span class=\"fed\">" . $_SESSION['brugernavn'] . "</span><br />" . url("/index.php?side=profil", "(Ret profil)") . "<br /><br />
    <form action=\"" . siden_selv() . "\" method=\"post\">
    <fieldset>
    <input type=\"submit\" name=\"logout\" value=\"Logout\" />
    </fieldset>
    </form>";
} else {
    $boksindhold = "
    <form action=\"" . siden_selv() . "\" method=\"post\">
    <fieldset>
    <input type=\"text\" name=\"brugernavn\" value=\" Brugernavn\" onfocus = \"if(this.value == ' Brugernavn') this.value = '';\" onblur = \"if(this.value == '') this.value = ' Brugernavn';\" />
    <input type=\"text\" name=\"kodeordtekst\" value=\" Kodeord\" onfocus = \"LoginPassFocus(this,this.form.kodeord);\" />
    <input type=\"password\" name=\"kodeord\" onblur = \"LoginExit();\" style=\"display: none;\" />
    <input type=\"checkbox\" name=\"autologin\" />Husk mig
    <input type=\"submit\" name=\"login\" value=\"Login\" />
    </fieldset>
    </form>&nbsp;" . url("/index.php?side=nybruger", "Ny bruger") . " | " . url("/index.php?side=glemtkode", "Glemt kode");
}

echo boks($boksnavn, $boksindhold);
Avatar billede googolplex Novice
12. juli 2003 - 16:18 #19
Du kan se den her:

www.ladefoged-roenne.dk
Avatar billede googolplex Novice
12. juli 2003 - 16:19 #20
Navn: Test, Kode: Hemmelig
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