Avatar billede qub- Novice
21. oktober 2004 - 09:57 Der er 10 kommentarer og
1 løsning

Login med sessions - virker ikke

Halløj eksperter..

Efter at have læst et par session artikler er jeg gået i krig med at prøve og lave et loginsystem - med kryptering..

Jeg har lavet en register.php, som fungere efter hensigten. Den kryptere mit password med md5, og smider det ind i databasen..

Min det er når jeg skal logge ind at det går galt.. Jeg ved ikke lige hvor fejlen ligger, men den vil ihvertfald ikke logge mig ind :)


Mit logincheck ser således ud:

//Start of login check
if (isset($_POST['userid']) && isset($_POST['password'])){


    $username = $_POST['userid'];
    $password = $_POST['password'];


    $password_kryp = md5($password);


        $sql = mysql_query("SELECT * FROM temp_users WHERE username='$username' AND passwd='$password_kryp'");
        $login_check = mysql_num_rows($sql);

        if($login_check > 0){
            while($row = mysql_fetch_array($sql)){
            foreach( $row AS $key => $val ){
                $$key = stripslashes( $val );
            }

                $valid_user = $username;
                $_SESSION['valid_user'] = $valid_user;
                $_SESSION['pass'] = $password;
       
            }
    }

}

//end of login check



og min "secret" side har så dette tilføjet:

if ($_SESSION['valid_user']) {
velkommen til den hemmelige side
}



Jeg har umiddelbart ingen ide om hvad der kan være galt.. Så håber der er en der kan hjælpe :)
Avatar billede sostack Nybegynder
21. oktober 2004 - 10:03 #1
Du skal have en session_start(); allerførst i hver af dine filer der kræver login!

//sostack
Avatar billede Slettet bruger
21. oktober 2004 - 10:04 #2
du skal huske kommandoen session_start(); som skal være det allerførste i koden´.. (ALLERFØRST)..
Avatar billede sostack Nybegynder
21. oktober 2004 - 10:04 #3
Også i den viste fil!

//sostack
Avatar billede qub- Novice
21. oktober 2004 - 10:04 #4
ja det ved jeg skam udemærket godt.. Har jeg også i min config.cfg som blver included inden (glemte at fortælle) :)
Avatar billede Slettet bruger
21. oktober 2004 - 12:03 #5
Hvordan udartes fejlen helt præcist? Hvad sker der når du prøver at logge ind?
Avatar billede sukos Juniormester
21. oktober 2004 - 12:12 #6
Hvad gør din foreach()?

Og jeg ville gøre så'n:

        $sql = mysql_query("SELECT * FROM temp_users WHERE username='$username' AND passwd='$password_kryp'");
       
        if(mysql_num_rows($sql) == 1){
            $row = mysql_fetch_array($sql);
               
                $_SESSION['valid_user'] = $row["username"];
                $_SESSION['pass'] = $row["passwd"];
        }

Og du har selvf. session_start() på undersiden? :O)
Avatar billede sukos Juniormester
21. oktober 2004 - 12:14 #7
Og så

if (isset($_SESSION['valid_user'])) {
echo"velkommen til den hemmelige side";
}
Avatar billede qub- Novice
21. oktober 2004 - 13:04 #8
Jeg tror det funker nu.. :)

Du skal nok få dine point sukos, men nu jeg er igang.. Kan du så fortælle mig hvordan man evt. kan lave, så hvis man har glemt password man så kan få det sendt på mail...

Jeg ved godt hvordan mail funktion fungere osv.. Men efter hvad jeg ved kan man jo ikke "unkryptere" md5, og når vi jo har krypteret det, og en person så mister det.. Så kan man jo aldrig rigtig få fat i passwordet, eller hvad? :)
Avatar billede sukos Juniormester
21. oktober 2004 - 13:10 #9
Ja, det er rigtigt, det kan ikke dekrypteres.
Men du kan jo så lave et nyt password, og sende det emd mail
Har selv gang i denne funktion, hentet på php.net

// Funktion til at lave et pasword, hentet på http://www.php.net/manual/da/function.rand.php
function randomPassword($len = 4)
{
$pass = '';
$lchar = 0;
$char = 0;
for($i = 0; $i < $len; $i++)
{
while($char == $lchar)
{
$char = rand(48, 109);
if($char > 57) $char += 7;
if($char > 90) $char += 6;
}
$pass .= chr($char);
$lchar = $char;
}
return $pass;
}

$nytpass = randomPassword();

så kan du putte det nye password i db'en, md5 krypteret, md5($nytpass), men også sende det i en mail
Avatar billede qub- Novice
21. oktober 2004 - 13:28 #10
ahh yesh.. Jeg tænker ikke så langt :D

Når man register, så er det også random password man får lavet og tilsendt.. Så har koderne ;)


Men lav lige et svar så du kan få dine velfortjente point :)
Avatar billede sukos Juniormester
21. oktober 2004 - 13:48 #11
Ok :O)
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