Avatar billede googolplex Novice
12. juli 2003 - 09:58 Der er 1 løsning

Sessions - autologin

Jeg har lavet login/autologin på min side (www.ladefoged-roenne.dk) og det virker...næsten.

Der er en lille fejl som jeg ikke kan overskue.

Fejl: Hvis man er logget ind med autologin og derefter logger ud, så duer mit login ikke den FØRSTE gang man prøver at logge ind igen umiddelbart efter, uanset om man taster rigtig/forkert eller med/uden autologin :(

Man kan bare trykke en gang på login og derefter prøve, så virker det igen, men det er temmelig irriterende !

Her er min kode, håber den er overskuelig, ellers må I spørge :P:

// I STARTEN AF MIN SIDE

session_start();
if (isset($_POST['logout'])) {
    if (isset($_COOKIE['brugernavn'])) {
        setcookie('brugernavn');
    }
    session_unset();
    session_destroy();
} else if (isset($_COOKIE['brugernavn'])) {
    setcookie('brugernavn', $_COOKIE['brugernavn'], time()+31536000);
    if (!isset($_SESSION['brugernavn'])) {
        aabn_forbindelse();
        $sql = "SELECT * FROM brugere WHERE BINARY brugernavn = '" . $_COOKIE['brugernavn'] . "'";
        $resultat = mysql_query($sql);
        $array = mysql_fetch_assoc($resultat);
        luk_forbindelse();
        if (mysql_num_rows($resultat) > 0) {
            foreach($array as $noegle => $vaerdi) {
                $_SESSION[$noegle] = $vaerdi;
            }
        }
    }
} else if (isset($_POST['login']) && $_POST['brugernavn'] != " Brugernavn" && $_POST['kodeord']) {
    $brugernavn = $_POST['brugernavn'];
    $kodeord = md5($_POST['kodeord']);
    aabn_forbindelse();
    $sql = "SELECT * FROM brugere WHERE BINARY brugernavn = '" . $brugernavn . "' AND BINARY kodeord = '" . $kodeord . "'";
    $resultat = mysql_query($sql);
    $array = mysql_fetch_assoc($resultat);
    luk_forbindelse();
    if (mysql_num_rows($resultat) > 0) {
        foreach($array as $noegle => $vaerdi) {
            $_SESSION[$noegle] = $vaerdi;
        }
        if (isset($_POST['autologin']) && strlen($_POST['autologin']) != 0) {
            setcookie('brugernavn', $_SESSION['brugernavn'], time()+31536000);
        }
    } else {
        header("Location: http://www.ladefoged-roenne.dk/index.php?side=fejl&type=login&menu=6521-3");
    }
}

// I MIN LOGIN BOKS LIDT SENERE

$boksnavn = "Status";

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);

Det er klart at fejlen skal findes i den øverste kode :)

Håber der er et geni, der kan overskue det :)
Avatar billede googolplex Novice
12. juli 2003 - 11:18 #1
Er løst :)
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