Login system, send glemt kodeord

Tags:    php login password reset

Heej alle

Hvordan får jeg lavet et "Forgot password" til mit login system.
Jeg har lavet det sådan at når man laver en bruger, så laver den kodeordet om til md5 kodeord.

Hvordan kan jeg få lavet et script der sender en mail til brugeren, med kodeordet, altså ikke det md5 kodeord, men det man skriver ind når man vil logge ind. :)



7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Du kan jo i princippet bare overskrive det eksisterende kodeord:

mysql_query("UPDATE tabelnavn SET pass='".md5($lav_kode)."' WHERE email='$email'");

Altanativt kan du påføre en ekstra kolonne password:

mysql_query("UPDATE tabelnavn SET `autopass`='".md5($lav_kode)."' WHERE email='$email'");

Så når brugeren taster et forkert password, tester du op på autopass kolonnens password.

Alternativ kan du påføre en ekstra kolonne boolean kolonne (tinyint). Når der laves et ny pass gør du som i mit første forslag og sætter flaget til 1:

mysql_query("UPDATE tabelnavn SET pass='".md5($lav_kode)."', `flag`=1 WHERE email='$email'");

Når brugeren logger ind henter du flaget med ud. Er det 1 beder du ham om at skrive et nyt password og sætter dette og flaget til 0.






Når først du har md5'et kodeordet, er det lidt svært at få det tilbage som plain password.
Jeg vil iøvrigt råde dig til at lave ligesom man gør her inde, det er måske lidt "en omvej" for nogle, men, det kan godt betale sig syntes jeg.



Jeg vil nu også anbefale dig at lave et script som autogenererer et nyt password ved forespørgsel. Så skal du heller ikke tænke på afkodning af noget som praktisk talt er umuligt..



Hvordan får man så smidt det der "nye" kodeord ind i mysql?

Altså det er noget med:
Fold kodeboks ind/udPHP kode 

Hvordan får man så lagt det nye ind i mysql?



Når først du har md5'et kodeordet, er det lidt svært at få det tilbage som plain password.
Jeg vil iøvrigt råde dig til at lave ligesom man gør her inde, det er måske lidt "en omvej" for nogle, men, det kan godt betale sig syntes jeg.


Ikke kun "lidt svært" - det er umuligt hvis sikkerheden er ordentlig :-)

I dette tilfælde vil man genere et tilfældigt password (bestående af tal og bogstaver) som MD5 i databasen og sende dette (i plain text) til brugeren. Når denne så logger ind første gang efter at have modtaget det nye password, skal denne blive bedt ændre det med det samme ;-)



Nu har jeg fået den til at sende til den email fra man skriver ind.

Hvordan tjekker jeg om email'en findes?

Min kode ser sådan her ud nu:
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 14.06.2011 13:57 af Bruger #16662
Rent principielt er der jo ikke noget at tjekke. Du henter den email du har for et givet brugernavn og sender en email til denne. Du har så enten valideret email da brugeren tilmeldte sig eller du tror på han ikke lyver.




t