Avatar billede zeattle Nybegynder
23. januar 2004 - 22:42 Der er 15 kommentarer og
1 løsning

Autologin virker ikke

Hej eksperter.

Jeg har et problem med mit autologin, det virker ikke som det skal...
Her er koden til login:
<?php
if($_POST[brugernavn]){
$kodeord = md5($_POST[kodeord]);
$tjek = mysql_fetch_array(mysql_query("SELECT * FROM brugere where brugernavn = '$_POST[brugernavn]' && kodeord = '$kodeord'"));
if($tjek == NULL){
echo "<div align=\"center\"><img src=\"./gfx/menu-linie.gif\"></div>";
print "<div align=\"center\"><font size=\"1\"><font face=\"Verdana, Arial, Helvetica, sans-serif\">Forkert <font color=\"#ce0000\">brugernavn</font> eller <font color=\"#ce0000\">kodeord</font>, prøv venligst igen.<br> Stadig problem, så send en mail til <a href=\"mailto: webmaster@zenum.net\">webmaster</a></font></font></div>";
} else {
if($autologin == TRUE){
setcookie ("id","$id");
setcookie ("brugernavn","$brugernavn");
setcookie ("kodeord","$kodeord");
print "<script>alert('Autologin er nu sat til.. du kan fjerne det ved at trykke på menu knappen Logud');</script>";
}
$id=$tjek[id];
session_register('id');
session_register('brugernavn');
session_register('kodeord');
print "logger ind....<script>location.replace('?page=velkommen');</script>";
}
}
?>

Til selve checkboxen:
<input type="checkbox" name="husk" value="ja">

Sig endelig til hvis jeg mangler noget kode. Ellers, så ret php koden så det virker. Håber der kommer en der kan hjælpe!

//zeattle - www.zenum.net
Avatar billede tefcke Nybegynder
23. januar 2004 - 23:32 #1
Her er et lille tip til login systemer og autologins.
Når brugeren logger ind sender de hans login oplysninger til en side som tager sig af validering osv. Der kan du samtidig tjekke om brugeren har valgt autologin. Når brugeren er valideret, sender du brugeren tilbage til den side som formen oprindeligt blev sendt fra. (http://dk.php.net/header header('Location: http://...');)
Angående autologin, så sætter du bare en cookie (med de oplysninger som er nødvendige for at du kan logge brugeren ind), så du ved at når denne bruger kommer ind på siden en anden gang, så skal du logge brugeren ind automatisk.
På alle dine sider inkluderer du så et stykke kode som bliver udført hvis brugeren ikke allerede er logget ind. Koden tjekker om der ligger den cookie du satte i forbindelse med brugerens login, hvor autologin var afkrydset. Hvis den cookie ligger der, så tager du login oplysningerne ud af denne cookie, og logger brugeren ind.
Avatar billede zeattle Nybegynder
23. januar 2004 - 23:41 #2
Alt det du siger der har jeg jo?

Min kode virker bare ikke helt ordenlig. Det er det jeg skal bruge hjælp til.

//zeattle - www.zenum.net
Avatar billede tefcke Nybegynder
24. januar 2004 - 01:03 #3
Har lige læst din kode igennem, og jeg mener at dit problem ligger i der hvor dine cookies bliver sat.

setcookie ("id","$id");
setcookie ("brugernavn","$brugernavn");
setcookie ("kodeord","$kodeord");

I følge manualen (http://dk.php.net/manual/en/function.setcookie.php) står der om `expire` argumentet til setcookie:
"If not set, the cookie will expire at the end of the session (when the browser closes)."

Med andre ord, dit script virker, men i det browseren bliver lukket bliver de satte cookies slettet.
Du skal altså sætte en udløbsdato på dine cookies:

// time()+60*60*24*30 = 30 dage
setcookie ("id","$id", time()+60*60*24*30 );
setcookie ("brugernavn","$brugernavn", time()+60*60*24*30 );
setcookie ("kodeord","$kodeord", time()+60*60*24*30 );
Avatar billede zeattle Nybegynder
24. januar 2004 - 01:17 #4
Det hjalp ikke :/
Avatar billede tefcke Nybegynder
24. januar 2004 - 11:09 #5
Men man kan godt logge ind normalt ik'?

Hvad sker der når autologin er slået til, og man hopper ind på siden?

Du skriver at det ikke virker som det skal, hvad er det præcis som ikke virker?
Avatar billede zeattle Nybegynder
24. januar 2004 - 12:05 #6
Altså den logger fint ind, men autologin virker ikke :/ Altså den er self logget ind hvis man opdatere siden, men ikke hvis man lukker vinduet og åbner et nyt. Efter jeg har sat det der på så skriver den heller ikke min alert...
Avatar billede tefcke Nybegynder
24. januar 2004 - 12:34 #7
Har du tjekket at de cookies som du sætter ligger på computeren?
Det lyder som om at du aldrig får sat de cookies. Med andre ord, du kommer aldrig ind i den if-blok som sætter dine cookies.
Avatar billede zeattle Nybegynder
24. januar 2004 - 16:42 #8
Den laver ingen cookies...
Avatar billede sukos Juniormester
24. januar 2004 - 16:51 #9
Avatar billede tefcke Nybegynder
24. januar 2004 - 19:04 #10
Prøv at skrive værdien af $autologin ud, jeg tror slet ikke du kommer ind i den if-blok ( $autologin == TRUE )
Avatar billede tefcke Nybegynder
24. januar 2004 - 19:26 #11
Har lige kigget koden igennem og rettede den for hvad jeg mente kunne give fejl:
-------------------------------------------------------------------------------------------
<?php
if(isset($_POST[brugernavn])){
    $kodeord = md5($_POST[kodeord]);
    $tjek = mysql_fetch_array(mysql_query("SELECT * FROM brugere WHERE brugernavn = '$_POST[brugernavn]' AND kodeord = '$kodeord'"));
    if($tjek == NULL){
        print '<div align="center"><img src="./gfx/menu-linie.gif"></div>';
        print '<div align="center"><font size="1"><font face="Verdana, Arial, Helvetica, sans-serif">Forkert <font color="#ce0000">brugernavn</font> eller <font color="#ce0000">kodeord</font>, prøv venligst igen.<br> Stadig problem, så send en mail til <a href="mailto: webmaster@zenum.net">webmaster</a></font></font></div>';
    } else {
        $_SESSION['id'] = $tjek[id];
        $_SESSION['brugernavn'] = $_POST[brugernavn];
        $_SESSION['kodeord'] = $kodeord;
        if($autologin == TRUE){
            setcookie ("id", $_SESSION['id'], time()+60*60*24*30);
            setcookie ("brugernavn", $_SESSION['brugernavn'], time()+60*60*24*30);
            setcookie ("kodeord", $_SESSION['kodeord'], time()+60*60*24*30);
            print "<script>alert('Autologin er nu sat til.. du kan fjerne det ved at trykke på menu knappen Logud');</script>";
        }
        print "logger ind....<script>location.replace('?page=velkommen');</script>";
    }
}
?>
Avatar billede tefcke Nybegynder
24. januar 2004 - 19:27 #12
Og du har selvfølig husket session_start()
;-)
Avatar billede zeattle Nybegynder
28. januar 2004 - 13:25 #13
Jeg har forresten også dette:
//Session og cache
session_start();

//sætter autologin
if($_COOKIE[autologin] == TRUE){
$id = $_COOKIE[id];
$brugernavn = $_COOKIE[brugernavn];
$kodeord = $_COOKIE[kodeord];
@session_register("id");
@session_register("brugernavn");
@session_register("kodeord");
}

noget med det?
Avatar billede tefcke Nybegynder
28. januar 2004 - 13:39 #14
<?php
//Session og cache
session_start();

//sætter autologin
if($_COOKIE['autologin'] == true){
    $_SESSION['id'] = $_COOKIE['id'];
    $_SESSION['brugernavn'] = $_COOKIE['brugernavn'];
    $_SESSION['kodeord'] = $_COOKIE['kodeord'];
}

if(isset($_POST['brugernavn'])){
    $kodeord = md5($_POST['kodeord']);
    $tjek = mysql_fetch_array(mysql_query("SELECT * FROM brugere WHERE brugernavn = '{$_POST['brugernavn']}' AND kodeord = '$kodeord'"));
    if($tjek == null){
        print '<div align="center"><img src="./gfx/menu-linie.gif"></div>';
        print '<div align="center"><font size="1"><font face="Verdana, Arial, Helvetica, sans-serif">Forkert <font color="#ce0000">brugernavn</font> eller <font color="#ce0000">kodeord</font>, prøv venligst igen.<br> Stadig problem, så send en mail til <a href="mailto: webmaster@zenum.net">webmaster</a></font></font></div>';
    } else {
        $_SESSION['id'] = $tjek['id'];
        $_SESSION['brugernavn'] = $_POST['brugernavn'];
        $_SESSION['kodeord'] = $kodeord;
        if($_COOKIE['autologin'] == true){
            setcookie("id", $_SESSION['id'], time()+60*60*24*30);
            setcookie("brugernavn", $_SESSION['brugernavn'], time()+60*60*24*30);
            setcookie("kodeord", $_SESSION['kodeord'], time()+60*60*24*30);
            print "<script>alert('Autologin er nu sat til.. du kan fjerne det ved at trykke på menu knappen Logud');</script>";
        }
        print "logger ind....<script>location.replace('?page=velkommen');</script>";
    }
}
?>

Men i det kode der er her, bliver der ikke sat nogen cookie med navnet `autologin`. Jeg antager at den bliver sat andetsteds, eller?
Avatar billede zeattle Nybegynder
28. januar 2004 - 14:00 #15
jeg includer min tjek.php i toppen, og så includer jeg senere min login...
Avatar billede zeattle Nybegynder
07. februar 2004 - 20:44 #16
lukker
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