Как грамотнее реализовать автоматическую смену пароля?
Попробуйте несколько вариантов:Создаем в БД в таблице users столбец "password_expire". При регистрации ставим туда текущую дату+90 дней (либо сколько Вам нужно). Также добавляем столбец "blocked" и ставим всем там значение false. Пишем скрипт, который вытягивает из бд всех юзеров, у которых password_expire равен текущему дню, и ставит им в blocked значение true. Делаем cron этого скрипта, чтобы он запускался раз в сутки. После дополняем скрипт авторизации, чтобы при входе он проверял значение blocked. Если оно true, то кидаем на страницу, где сообщаем о необходимости сменить пароль, и требуем новый пароль. После успешной смены ставим в blocked значение false и в password_expire текущую дату + 90 дней;Добавляем столбец password_expire в users, где ставим сегодня + 90 дней. Опять пишем обработчик. Если в password_expire текущая дата, то шлем пользователю письмо со ссылкой на страницу смены пароля;Все те же самые password_expire и blocked, но более гуманно: просто в начале страницы вешаем блок с уведомлением о смене пароля и не убираем до тех пор, пока пароль не будет сменен и, соответственно, blocked не станет false.
Все очень плохо. Данная система совершенно не безопасна. Пользователь должен просто получать требование сменить пароль сразу после входа в систему со старым паролем. То, что у вас сейчас есть - профанация.