registrering side + login side + password encryption hjælp!

Tags:    databaser

Jeg har siddet i mange timer nu, og har fulgt adskillige tutorials meget nøje, men det vil bare ikke virke.

Jeg har en side med registreringsform og login form.

Den hedder index.php og ser således ud:
Fold kodeboks ind/udKode 


Lad mig så vise jer "insert.php"

Fold kodeboks ind/udKode 


Og nu til "login.php"

Fold kodeboks ind/udKode 


Og jeg får altid svaret "bad login" når jeg prøver at logge ind.

Hvis jeg undlader at kryptere med "md5()" virker det, men jeg vil gerne kryptere det.

Kan nogen forklare mig hvad jeg gør forkert??

På forhånd tak :)






Umiddelbart vil jeg mene, at fejlen kunne lige i dine SQL-sætninger. Det ser ud til, at du blot indsætter værdierne "$brugernavn" og "$password" i databasen - altså ikke variablerne. For at gøre dette, vil jeg mene du skal rette dine SQL-sætninger til det følgende:

Fold kodeboks ind/udKode 

Fold kodeboks ind/udKode 



Endvidere mangler du at beskytte dig mod SQL-injections :) brug evt. mysql_real_escape_string rundt om dine $_POSTs:

Fold kodeboks ind/udKode 


Da du laver en hash af dit password inden det bliver smidt ind i SQL-sætningen, burde du ikke behøve at escape det.



Indlæg senest redigeret d. 22.07.2010 15:08 af Bruger #15947
Nu har jeg gjort alt hvad du sagde, men det havde desværre ingen effekt..

Ellers tak :)


Andre ideer???



Her er lidt du kan analysere på. Det er ikke testet, men burde dog virke.

Fold kodeboks ind/udPHP kode 


Fold kodeboks ind/udPHP kode 




Hvordan er din databasetabel defineret? Dit passwordfelt skal have plads til 32 karakterer da md5-funktionen returnerer en streng på 32 karakterer. Så hvis du f.eks. har defineret dit felt som varchar(20) vil du aldrig kunne logge ind, når du bruger md5, da de 12 sidste karakterer i md5-hashen ikke bliver gemt i databasen...



Tak for hjælpen allesammen.

Jeg har løst problemet og ja den var sat til VARCHAR 16 istedet for 32..


Tak :D



Indlæg senest redigeret d. 24.07.2010 21:58 af Bruger #16017
t