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> " . 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 :)
