Как везде. Юзеру посылается контрольное письмо, он переходит по ссылке, указанной в этом письме и потом его пароль меняется и высылается ему новый пароль
НЕ Я Хочу знать где хранить гинерированный пароль, а то елси в файле например $file = $_POST['userid'].".txt"; $file = file($file); if($_POST['newpass'] == $file[0]){ $sql = "UPDATE bla bla;"; $result = my_sql("$sql"); echo "Ваш пароль bla bla"; } В этом случие не делает, значит не совподение есть!
Что от пользователя получаешь, все через htmlspecialchars(stripslashes ($var)) пропускать. А то, что слева и справа будут удалены пробелы, настоящих гуру-хакеров не остановит.
В принципе, если пароль не будет нигде выводится, и от него будет браться хешкод, то не надо. Но будет прикольно, если у тебя сработает аlert (), когда ты пользователю на мыло пришлешь его пароль, перед тем, как его хешировать, разумеется.
NIKO делаешь так: 1. введенный пароль в md5(); 2. хранишь этот хеш где угодно 3. при ситуации "забыли пароль" генерируешь новый пароль и отсылаешь его на мыло. 4. при авторизации сравниваешь только md5() что не понятного-то?
ИМХО, все пароли надо бросать в MD5, тогда любая строка больше трех символов (а меньше - это уже не пароль) будет безопасным 32б-хешем, да и сравнивать проще... А при "забыл пароль" предлагать только вводить новый, ссылаясь на то, что в базе он зашифрован без возможности возврата. htmlspecialchars и trim к паролю лучше не применять... кто запрещал пользователю пароль с пробелами? Т.ч. PHP: $pas = md5($_POST['pass']); //или md5(stripslashes($_POST['pass'])), если в php.ini включены Magic_quotes $sql="UPDATE `...` SET `pass` = '".$pas."' WHERE `userid` = '".$id."';"; mysql_query($sql);