boren Skrevet 15. juli 2006 Del Skrevet 15. juli 2006 Va er feilen her: login.php <html> <body> <form method="post" action="loginaction.php"> Nick: <br> <input type="text" name="brukernavn"> <br> Passord: <br> <input type="password" name="passord"> <br> <input name="Submit" type="submit" value="Login"> </form> </body> </html> loginaction.php <?php if($_POST['brukernavn'] && $_POST['passord']) { $hostname = "localhost"; $user = "root"; $password = "*****"; $db = "db"; $connection = @mysql_connect($hostname, $user, $password) or die("Umulig å få kontakt med database"); @mysql_select_db($db); //Lager krypteringsfunksjonen function sjekker_pw($oppgitt, $lagret) { $salt = substr($lagret, 0, CRYPT_SALT_LENGTH); $oppgitt_kryptert = crypt($oppgitt, $salt); return($lagret == $oppgitt_kryptert); } $sjekker_brukernavn = @mysql_query("SELECT id,passord FROM medlemmer WHERE brukernavn='{$_POST['brukernavn']}'"); if(@mysql_num_rows($sjekker_brukernavn) == 0) { print("Feil brukernavn"); } else { $hentet_passord = @mysql_fetch_array($sjekker_brukernavn); if(!(sjekker_pw($_POST['passord'], $hentet_passord['passord']))) { print("Passordet var feil"); } else { session_start(); $_SESSION['innlogget'] = 1; $_SESSION['brukernavn'] = $brukernavn; $_SESSION['passord'] = $hentet_passord['passord']; header("Location: innlogget.php"); } } } else { print("Du må fylle ut både brukernavn og passord!"); } ?> innlogget.php <?php session_start(); if($_SESSION['brukernavn'] && $_SESSION['passord']) { //Logger på databasen. Legg inn din egen info $hostname = "localhost"; $user = "root"; $password = "****"; $db = "db"; $connection = @mysql_connect($hostname, $user, $password) or die("Umulig å få kontakt med database"); @mysql_select_db($db); //Sjekker passord og brukernavn med database $henter_bruker = @mysql_query("SELECT brukerid FROM medlemmer WHERE brukernavn='{$_SESSION['brukernavn']}' AND passord='{$_SESSION['passord']}'"); if(@mysql_num_rows($henter_bruker) == 0) { print("Feil brukernavn og/eller passord!"); } else { //Nå er brukeren logget inn! print("Du er nå logget inn"); } } else { print('Du må være innlogget for å nå disse sidene! <a href="login.php"> Tilbake </a>'); } ?> Tror selve feilen ligger i "innlogget.php", fordi der er passordet forsatt krypta. Takk for all hjelp. Mvh. Tore 'BoreN' Bore Lenke til kommentar
tussiesel Skrevet 15. juli 2006 Del Skrevet 15. juli 2006 (endret) Hvis det du mener er her at $_SESSION['passord'] er kryptert, så har du helt rett i det. I linje 36 i logainaction.php setter du den lik $hentet_passord['passord'], som litt tidligere er hentet fra databasen. Hvis du ønsker å lagre det ukrypterte passordet i sessionen må du bruke $_POST['passord'], men da vil du få problemer med sjekken i innlogget.php (regner med at det er den krypterte varianten du har lagret i databasen). EDIT: Jeg oppdaget en annen ting nå: i loginaction.php i funksjonen sjekker_pw() bruker du deler av $lagret (som er passordet lagret i db) til salt. For at crypt() skal gi samme resultatet hver gang den kjøres, må den jo ha samme salt, men verdien av $lagret kunne du umulig vite da passordet ble lagret i databasen. Vil gjette på at du har brukt passordet selv som salt, og det som skal stå der er: $salt = substr($oppgitt, 0, CRYPT_SALT_LENGTH); -Simen Endret 15. juli 2006 av tussiesel Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå