Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Reset hasła + mail.
Forum PHP.pl > Forum > Przedszkole
zaaap
Witam,
Budujac strone z systemem kont natrafilem na maly problem. Otoz szukam skryptu czy jakiegos nakierunkowania na rozwiazanie takiego oto problemu:

user zapomina hasło, podaje swoj nick/email, haslo jest resetowane ale dopiero po kliknieciu linka otrzymanego mailem.

Do tej pory udalo mi sie stworzyc jedynie system ktory generuje losowe 16 znakowe haslo, robi updejt w bazie i wysyla owe haslo do usera, ale w takim ukladzie kazdy moze zresetowac haslo innego uzytkownika. Domyslam sie, ze moze chodzic o jakies tokeny czy cos podobnego? Szukalem tu na forum ale bez skutku a jak na google wpisuje resetowanie hasla to listuje mi milion for z linkami do resetu haseł.
TheaSiX
może to Ci jakoś pomoże:

http://net.tutsplus.com/tutorials/php/crea...covery-utility/
l0ud
Zrób sobie nowe pole w tabeli użytkowników, które będzie zawierało powiedzmy 16 znakowy ciąg (generowany losowo). Domyślnie użytkownik ma to pole puste. Jednak, przy wybraniu opcji zmiany hasła pole jest uzupełniane o losowy ciąg, a do użytkownika wysyła się e-mail z linkiem do skryptu, wartością tego pola oraz dla bezpieczeństwa dodatkowo ID usera. Po wejściu przez taki link pole w bazie jest weryfikowane i na powrót czyszczone. W tym momencie masz kilka możliwości:
- podanie użytkownikowi możliwości wpisania nowego hasła bezpośrednio na stronie (po wpisaniu zostanie zmienione)
- zmiana aktualnego hasła na jakieś losowe i wyświetlenie go lub (bezpieczniejsze) wysłanie na e-mail.

To chyba jedno z najprostszych rozwiązań jakie da się wymyślić smile.gif Tylko pamiętaj o odpowiednim generowaniu ciągu - nie może być za nic możliwy do odgadnięcia.
cojack
Robisz coś takiego:
  1. CREATE TABLE reset_user
  2. id serial UNIQUE PRIMARY KEY,
  3. user_id integer,
  4. hash varchar(32),
  5. time integer,
  6. FOREIGN KEY (user_id) REFERENE user(id)

I tak, tworzymy hasza dla usera, i wysylamy do niego linka z tym haszem, jezeli kliknie na takiego hasza to wtedy po haszu sprawdzasz id usera, i zmieniasz mu haslo.
Proste, pozdrawiam.
zaaap
OK, rozumiem Wasz tok myslenia. W tym momencie sprawa rozbija sie o stworzenie takiego wlasnie linka z haszem oraz powiazanie tego z faktem klikniecia na ten link. Nie wiem jak sie za to zabrac. Okej tworze tego hasza przez jakis tam algorytm, sprawa drugorzedna, robie ta powiedzmy temp_tabele, i uzupelniam ją tym haszem, ale wlasnie nie wiem jak przekazac bazie fakt wejscia na dany link...
cojack
No jak jak? Przeciez to jest proste, link bedzie mial jakis get tak? Wiec np index.php?haslo=reset&hasz=436gk436k34g6g454fkjgisdytgfoisdghtrlwkrjg

no i co? mamy w pliku index.php jakies tam switche ify czy co, i jezeli jest get haslo i zawiera reset to sprawdzamy czy dany hasz znajduje sie w bazie, znajduje, to resetujemy haslo usera, przekierowywujemy go na strone z resetowaniem hasla i po id usera zmienamy haslo, po tym wszystkim kasujemy z bazy wiersz.
Amen.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.