Avatar billede jonatand Nybegynder
05. marts 2002 - 16:24 Der er 8 kommentarer og
4 løsninger

md5()

Har lige et lille problem.
Jeg har et brugersystem, hvor jeg vil have passwords krypteret med md5. (http://www.php.net/manual/en/function.md5.php )

Jeg har en "opret" fil, der skal kryptere password. Så har jeg en "login" fil.
Når man opretter en ny bruger krypterer den passwordet fint, hvilket jeg kan se i min MySQL-databse. Men hvad skal jeg gøre for at logge ind?!
Skal man bare skrive
password = '$password', eller skal der stå noget lignende
password = MD5('$password') ?
Jeg har prøvet begge dele, men det virker ikke. Den siger at password er forkert indtastet.
Altså; intet problem med oprettelse, men når man skal logge ind virker det ikke...
Avatar billede ztyxx Nybegynder
05. marts 2002 - 16:29 #1
lidt mere kode...
Avatar billede jonatand Nybegynder
05. marts 2002 - 16:34 #2
hmm.
Avatar billede jonatand Nybegynder
05. marts 2002 - 16:35 #3
Opret:
------------------
<?
mysql_connect("...", "brugernavn", "password");
mysql_select_db("brugere");

if($brugernavn == "") { echo "Du har ikke skrevet noget brugernavn"; exit; };
if($pass1 == "") { echo "Du har ikke skrevet noget password"; exit; };
if($pass2 == "") { echo "Du har ikke gentaget dit password"; exit; };
if($email == "") { echo "Du har ikke skrevet nogen email adr."; exit; };

$query = mysql_query("SELECT brugernavn FROM brugere WHERE brugernavn='$brugernavn'");
$antal = mysql_num_rows($query);

if($antal == 1) { echo "Desværre, der findes allerede en bruger med sammenavn"; exit; };

if($pass1 != $pass2) { echo "De 2 password er ikke ens, prøv igen"; };

$pass1 = md5($pass1);
mysql_query("INSERT INTO brugere (brugernavn, password, email) VALUES ('$brugernavn', '$pass1', '$email')");
echo 'Tillykke du er nu oprettet som bruger. Du kan logge ind <a href="login.php">her</a>';
?>
--------------------

Login: (problemet)
--------------------
<?
mysql_connect("SUBCUBES", "root", "");
mysql_select_db("brugere");

$query = mysql_query("SELECT brugernavn,password FROM brugere WHERE brugernavn='$brugernavn' AND password='$password'");
$antal = mysql_num_rows($query);

if($antal == 0) {
echo "Nix, den gik ikke";
}
else
{

setcookie("brugernavn", $brugernavn, time()+3600);

$query = mysql_query("SELECT * FROM brugere WHERE brugernavn='$brugernavn' AND password='$password'");
$email = mysql_result($query, 0, "email");

echo "Hej $brugernavn - din email er $email";

}
?>

--------------------
Avatar billede nyhjem Nybegynder
05. marts 2002 - 16:35 #4
I dit logind system skriver du noget i den her stil:

$res = mysql_query("SELECT password WHERE username='$username';");
$row = mysql_fetch_array($res);

if (md5($password) != $row["password"]) { print "Forkert password"; exit; }

Altså. md5 krypter det password brugeren skriver når han vil logge ind, og sammenlign de to krypteret passwords med hinanden*S*
Avatar billede cyberdude Nybegynder
05. marts 2002 - 16:45 #5
du kan også sammenligne både brugernavn og password i din sql sætning.....

<?
mysql_connect("SUBCUBES", "root", "");
mysql_select_db("brugere");
$password = md5($NAVNET_PÅ_FELTET_I_LOGIN_FORMULAREN);
$query = mysql_query("SELECT * FROM brugere WHERE brugernavn='$brugernavn' AND password='$password'");

if (!mysql_num_rows($query)) {
echo "Nix, den gik ikke";
}
else
{

setcookie("brugernavn", $brugernavn, time()+3600);
$row=mysql_fetch_row($query);
$email = "$row["email"]";
echo "Hej $brugernavn - din email er $email";

}
?>

Jeg har optimeret koden lidt, og fjernet den sidste forespørgsel du laver til databasen. den er overflødig, og er kun med til at "sløve" systemet en smule :-)
Avatar billede jonatand Nybegynder
05. marts 2002 - 16:56 #6
Jeg har gjort dette:
$password = md5($password);
$query = mysql_query("SELECT * FROM brugere WHERE brugernavn='$brugernavn' AND password='$password'");

Men det virker stadig ikke!
Avatar billede nyhjem Nybegynder
05. marts 2002 - 17:07 #7
Prøv med:

$query = mysql_query("SELECT * FROM brugere WHERE brugernavn='$brugernavn';");
$row = mysql_fetch_array($query);

if (md5($det_password_brugeren_skrev) != $row["password_fra_database"])
{
print "FEJL";
exit;
} else {
print "OK";
}
Avatar billede jonatand Nybegynder
05. marts 2002 - 17:13 #8
Den laver stadig fejl.
Det er dette: http://www.blarp.dk/artikel.php?id=6
Avatar billede cyberdude Nybegynder
05. marts 2002 - 18:07 #9
hmmm..... det der står på den side du henviser til ..
i opret.php kryptere du ikke passwordet.....
og i reguser.php prover du et sammeligne et password i ren tekst, selvom det der er i databasen måske er krypteret.....

jeg syntes ikek der e rså meget sammenhæng mellem koderne på den side du henviser til og så det du poster her af kode at være......
Avatar billede fireworld Nybegynder
06. marts 2002 - 10:48 #10
prøv

at kig i database og se om den kryptere med md5()

ellers bare lav en

$query = mysql_query("select * from brugere where brugernavn='$brugernavn'&&password="'.md5($password)."');
Avatar billede fireworld Nybegynder
06. marts 2002 - 10:50 #11
og så en

  if(mysql_num_rows($query)==0) { echo "Fejl i brugernavn eller password"; }else{ echo" Du er er inde"; }
Avatar billede jonatand Nybegynder
22. marts 2002 - 13:14 #12
Det var en fejl i Mysql databasen...
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