Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sensowne 'zapomniałem hasła'
Forum PHP.pl > Forum > PHP
tmk
Witam,
jaki jest sensowny sposób na zrobienie opcji "zapomniałem hasła"?
mam zrobione logowanie php+mySql na sesjach, w bazie trzymam login i md5(hasło).

Myślalem o tym, żeby użytkownik podawał email i login, i jeśli taki istnieje w bazie, to dla konta o takim email i login zrobić Update:
zapomniane hasło zamienić na jakieś losowe i wysłać mail z nowym hasłem.

Ale chyba powinna być jeszcze jakaś aktywacja tego nowego hasła? czy myślicie, że nie jest to konieczne?

z góry dzięki za opinie

tmk
NuLL
Cytat
Ale chyba powinna być jeszcze jakaś aktywacja tego nowego hasła? czy myślicie, że nie jest to konieczne?


Raczej nie ma potrzeby - wystarczy sobie zadać pytanie - po co ?
tmk
A jak można losować jakiś ciąg mieszany litery-cyfry? bo rand, srand, to tylko do liczb się nadają..
jest gotowa funkcja? czy trzeba jakoś swoją zmontować?



tmk
gilbo
Ja myślę, że jednak takie potwierdzenie byłoby przydatne, ponieważ osoba, która zapomniała hasła mogła podać komuś swój email i ktoś może jej to hasło zmienić, a ta osoba nie wiedząc o tym będzie się męczyła nad wpisaniem starego hasła...
crash
Cytat(gilbo)
a ta osoba nie wiedząc o tym będzie się męczyła nad wpisaniem starego hasła

Nie wiedząc o czym? O tym, że dostała nowe hasło na maila? tongue.gif

tmk: było wiele razy na forum, poszukaj...
Leezard
@tmk: chyba losowanie mozna zrealizowac np generujac sobie id sesji i uzyc go jako hasla
rogrog
po kliknięciu wysyłasz emaila z losowym nowym hasłem oraz linkiem aktywacyjnym. Po wejściu na ten link można użyć przesłanego losowego hasła do ustawienia nowego, własnego hasła. Email posiada też informację tego typu:

"prawdopodobnie użyłeś opcji "zapomniałem hasła". Jeżeli tego nie robiłeś, zignoruj ten email"

bo przecież linku "Zapomniałem hasła" może użyć każdy, a głupio by było codziennie mieć nowe hasło ustawiane przez zlosliwych kolegow
dr_bonzo
Cytat
A jak można losować jakiś ciąg mieszany litery-cyfry? bo rand, srand, to tylko do liczb się nadają..
jest gotowa funkcja? czy trzeba jakoś swoją zmontować?

Jest taka funkcja do tworzenia takich ciagow znakow biggrin.gif tylko nie pamietam jej nazwy. Jak znajde (a konkretnie -- jak przypadkiem znow na nia trafie) to podam.
NuLL
Jak masz może na serwerze jakiś słownik aspell to może sobie wbrac losowe slowo.
Jabol
wiecie, podanie komuś emaila nie oznacza odrazu, że ma on dostęp do konta samego w sobie... nie przesadzajmy.
rogrog
losowanie: robisz sobie tablicę z możliwymi znakami i array_rand. do wypełnienia tablicy możesz użyć range
jono
Co do losowego hasła:

  1. <?php
  2.  
  3. $nowe = substr(md5(uniqid(rand(), true)), rand(0,10), 5);
  4.  
  5. ?>


Uzyskasz w ten sposób bardzo ładne, pięcioznakowe hasełko... a potem przy pierwszym logowaniu wyświetl komunikat: "to tylko hasło tymczasowe, ustal nowe"... ale rymuję smile.gif Po co robić jakieś tablice, skoro są gotowe rozwiązania do tego.
rogrog
@jono: przy tablicy masz większą kontrolę nad zestawem znaków dla hasła.

no ale dla haseł zawierających wyłącznie litery i cyfry Twój kod jest ok. Wg mnie niepotrzebne obcinanie od losowej pozycji.
talee
Moim skromnym zdaniem jedyne słuszne smile.gif rozwiązanie wygląda następująca:
'zapomniałem hasła' klik,
formularz adres ‘e-mail’ zapominalskiego,
na ten mail idzie list z linkiem do formularza ‘nowe hasło’, ‘powtórz hasło’,
kolo wpisuje co trzeba i po krzyku.
Link oczywiście ma jakiś tam okres ważności.
AxZx
skonczmy teoretyzowac smile.gif
przejdzmy do konkretow smile.gif

skad ten ostatni formularz do nowego hasla ma wiedziec ze odpowiednia osoba chce zmienic haslo ? - swoje haslo

w linku podac jakis sid skladajacy sie z 32 znakow? i sprawdzic czy ten kto wchodzi wchodzi poprzed dobrego linka czyli sprawdza id z linka z jakims tam sid pobranym np z bazy ?
czyli trzeba utworzyc kolejna kolumne w tabeli user
dobre?
tak zrobilem newsletter do usuwania kogos i potwierdzania checi dostawania newsow.
tomilipin
Cytat(jono @ 2005-02-08 19:55:34)
Co do losowego hasła:
  1. <?php
  2.  
  3. $nowe = substr(md5(uniqid(rand(), true)), rand(0,10), 5);
  4.  
  5. ?>
[...] Po co robić jakieś tablice, skoro są gotowe rozwiązania do tego.
Sorry, że odpowiadam trochę po czasie, ale powiem wam jak zrobiłem to ja, chociaż zaawansowany nie jestem.

Nowe hasełko można wygenerować za pomocą
  1. <?php
  2. $nowehaslo = uniqid(' ');
  3. ?>
Co da w rezultacie ciąg 13 cyfr i liter wygenerowany na podstawie aktualnego czasu + może dodać ciąg zawarty w atrybutach.

W bazie, dla każdego usera warto zapisywać jego status, np. 0 to user nieaktywny, 1 - aktywny, 2 - była prośba o zmianę hasła. Gdy status=0 to do usera nie wysyłamy wiadomości newslettera. Gdy status=1 wiadomo, a gdy status=2 możemy wysłać wiadomości np. newslettera bo ktoś, nie wiadomo kto, próbował usunąć konto/zmienić dane/zrobić cokolwiek co wymaga potwierdzenia ale jeszcze tego nie potwierdził. I gdy status=2 a user potwierdza co tam chciał to wtedy zmieniamy mu status na inny albo usuwamy rekord. Statusy mogą się różnić w zależności od potrzeb, zawsze może być ich więcej winksmiley.jpg

Tak robię swój newsletter, który działa na tekstowej bazie danych a który wymaga potwierdzenia dodania/usunięcia adresu e-mail i umożliwia to za pomocą linków w mailach oraz za pomocą formularza smile.gif Jeśli ktoś zgubi klucz potwierdzenia, usunie maila czy cokolwiek innego, to dopóki status nie równa się 1 - może wysłać do siebie nowy klucz, inny od poprzedniego.
http://www.pil.vectranet.pl/~tomilipin/newsletter/index.php
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.