![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 0 Dołączył: 16.08.2017 Ostrzeżenie: (0%) ![]() ![]() |
Stworzyłem formularz odzyskiwania hasła który wysyła na skrzynkę e-mailową nowe hasło a w bazie danych dodaje taki sam wpis w tabeli "pass_temp".
Osoba która otrzymuje e-maila klika w link "zmiana hasła" i może odrazu wpisać tymczasowe hasło, nowe i powtórzenie nowego hasła. Wszystko działa jednak jest problem w sytuacji jak dwie osoby w tym samym czasie chciały by odzyskać hasło. Proszę o jakieś sugestie
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
strasznie to zagmatwane.
w ogóle po co jakieś tymczasowe hasło ? skoro - jak sam piszesz, użytkownik i tak je zmieni zaraz po zalogowaniu User zapomniał hasła, klika w przycisk "resetuj hasło" i wpisuje adres email lub login dla którego ma zostać wysłany email z linkiem. Link powinien zawierać token po którym strona zweryfikuje że ten użytkownik chce zmienić hasło, moze to wyglądać np: www.jakastrona.pl/passreset?user=bolek&&token=idhasd12898sd9adjasd9022j1nndsa to najprostsza wersja. Token generujesz haszując np email, login lub inne stałe dane użytkownika + sól. Klikając w link strona weryfikuje czy użytkownik istnieje, generuje token wg tego samego schematu co podczas tworzenia linka i porównujesz czy się zgadza. Jeśli jest ok, wyświetla formularz zmiany hasła gdzie podaje się już tylko nowe hasło i tyle. można też zrobić oddzielną tablicę która zawiera tylko tokeny (przykładowa struktura: [id, userID, token, date]), łączysz ją relacją z tablicą users. Wtedy link mógłby już wyglądać tak: www.jakastrona.pl/passreset?token=idhasd12898sd9adjasd9022j1nndsa Plus jest taki że hash za każdym razem może być inny, bo masz go zapisanego w bazie. Po kliknięciu w link, sprawdzasz czy token istnieje w bazie i pobierasz dane użytkownika do którego został przypisany. Reszta bez zmian, jeśli jest ok, wyświetlasz formularz w którym user wpisuje nowe hasło. Jeśli chodzi o usuwanie wygasłych tokenów to w tym konkretnie przypadku możesz śmiało wykonywać to przed każdym sprawdzeniem tokena - cronjob nie ma sensu do takiego prostego zadania. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 01:11 |