Можно такое использовать:
Необходимые данные:
пароль
вопрос для напоминания
ответ на вопрос
Алгоритм:
юзер вводит пароль
и ответ на вопрос.
в БД заносится password(\'$password\');
и encpass=encode(\'$password\',\'ответ\');
если юзер забыл пароль - ему выводится вопрос
Далее
если password==password(\'decode(\'encpass\',\'ответ\')) юзер выводится decode(\'encpass\',\'ответ) - это будет забытый пароль.
encode() и decode() - встроенные функции MySQL.
Насколько надежны - не знаю, может стоит использовать mcrypt()
PS
Если кто идею не понял, то суть в том, чтобы с помощью ответа шифровать пароль, но сам ответ в БД не хранить. Его будет вводить юзер, когда забудет пароль.