md5 kryptering driller

Tags:    md5 php mysql

<< < 12 > >>
Hej
Jeg er igang med at lave et loginsystem til min side, hvor jeg bruger md5 krypterede passwords, men jeg kan ikke rigtig få det til at virke.
Jeg har indsat den krypterede koder manuelt, fordi jeg endnu ikke har lavet brugeroprettelsesfunktionen endnu.
Jeg har derfor lavet en simpel php-fil med en formular:
Fold kodeboks ind/udHTML kode 

Den fil jeg sender videre til krypterer passwordet og skriver så brugernavn, samt krypteret kode:
Fold kodeboks ind/udPHP kode 

Når jeg så forsøger at logge ind med brugernavn og password, som er det samme som det jeg krypterede får jeg fejl. Her er min login og check filer:
Login:
Fold kodeboks ind/udHTML kode 

Check:
Fold kodeboks ind/udPHP kode 

Er der nogen der kan fortælle mig hvad der er galt?



19 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 30 karma
Sorter efter stemmer Sorter efter dato
Hvis jeg skulle omskrive din kode, ville jeg gøre noget af det de andre allerede har sagt samt lidt ekstra
Fold kodeboks ind/udPHP kode 

Jeg har først og fremmest sikret den mod SQL Injections, som er noget værre noget hackerne bruger for at tilgå dine data i databasen. Herefter har jeg ændret dit SQL statement fra at hente alle rækker, til at hente en række, hvor brugernavn og password matcher. Dette behøves nemlig ikke gøres på serversiden.

Til sidst har jeg sat din session loggedin til 1 i stedet og endnu en session med navnet username, der indeholder brugerens brugernavn. loggedin skal nemlig kun bruges som en tjek variabel og ikke andet. Du kan dog ændre det tilbage hvis du syntes



Indlæg senest redigeret d. 30.03.2012 09:44 af Bruger #4487
Fejlen er denne: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''kenneth' at line 1
Kan ikke lige se en anden måde at gøre det på.


Et ældgammelt indianer trick:

echo "SELECT * FROM login WHERE username = '" . $_SESSION['username'];
---
SELECT * FROM login WHERE username = 'kenneth

Så burde fejlen være gennemskuelig.



Det som Stefan mener er, hvis den skriver at der er syntaxfejl i din SQL, så udskriv altid sql-strengen med echo for at se hvad problemet er. Kunne måske være et manglende ' i dette tilfælde.



Hej
Jeg sidder og roder med noget af det samme og koden som I har fundet frem til virker bare som det skal :D. Har bare det samme bøvlede problem med at jeg ikke kan få den til skrive navnet på brugeren, ikke brugernavnet, men det "rigtige" navn som personer har oplyst ved registrering.
Fandt i en løsning på det?
Hvis du henter alle bruger data ud fra din tabel med SQL koden, og din tabel f.eks. har en kolonne der hedder fullname eller lignende, så kan du sætte en session ligesom med brugernavnet, men nu bare hvor du også gemmer fullname værdien.
Fold kodeboks ind/udPHP kode 

Bemærk at du skal have en kolonne med brugerens rigtige navn, og hvis ikke din kolonne hedder fullname, kan du bare ændre dette, til hvad den nu hedder. Bemærk også at jeg har i koden har ændret den til også at lave værdien af 'fullname' til en session, som man kan bruge over hele siden nu. Du kan herefter bruge den ved at udskrive værdien i session således
Fold kodeboks ind/udPHP kode 




Skal din if i linje 15 ikke være $info['password'] der sammenlignes med $adminpassword? Lige nu sammenligner du vel det indtastede password med md5 værdien af det indtastede.



Indlæg senest redigeret d. 30.03.2012 09:13 af Bruger #9814
Der er en del ting galt her. Hvis du starter med dette, burde du nemt kunne bygge det videre.

Du henter alle oplysninger fra tabellen:

mysql_query("SELECT * FROM login" )

Og sammenligner brugernavn og password, kun på den første række i tabellen.

Du burde nøjes med at hente de oplysninger du skal bruge.

("SELECT NØDVENDIG_INFO FROM login WHERE USERNAME=$username and PASSWORD=".md5($password));

Derefter skal du bare tjekke, at der bliver returneret 1 række. Så ved du der match på brugernavn og password.



Øh???
Jeg synes ellers at jeg har bedt den om at værdien af $adminpassword er det jeg har indtastet i password-feltet, omformet til md5, for at kunne sammenligne med databasen.
Hvis det skulle laves korrekt, hvordan skulle det så se ud, og hvorfor?



ok. nu virker den del, men nu er problemet så at jeg gerne vil lave det samme med min login-side, som jeg har ændret lidt på.
Min loginside er en del af min menu, og den ser således ud:
Fold kodeboks ind/udPHP kode 

Hvordan laver jeg det så om så den henter indholdet fra feltet name i samme tabel og derved skriver "Velkommen [brugerens navn] og ved siden af laver en logud knap.



Det er fint at det virker og fin løsning fra Martin :-) Men det er vigtigt at du forstår hvorfor det virker, da der var mange huller i din første løsning.

Ikke at jeg skal spille "smart", men det er vigtig - specielt når det nu er et eksamensprojekt du er igang med at lave ;-)

Gem brugernavnet i en session variabel og udskriv den på sædvanligvis ved siden af din knap.



Jeg har skam forstået hvad hans rettelser gør og hvordan det virker, men lige det med at jeg skal have det navn der hører til det brugernavn der er lavet session på udskrevet sammen med velkommen, kan jeg ikke lige få kringlet, fordi det er noget med at jeg skal bruge den mysql_query kommando som der også bruges ved login, og så gå ind og vælge det navn der hører til brugernavnet og gemme det i en variabel og derefter udskrive den.



<< < 12 > >>
t