Зачем session save handler вообще трогать для такой задачи?
При авторизации смотрите время действия этого пароля (timestamp default NULL):
если null - сохраняете текущее датавремя в это поле и пропускаете
иначе - сравниваете с текущим. Если час ещё не прошёл - пускаете, иначе отлуп, пароль устарел.
Чтобы на каждый запрос не дёргать базу, сохраняете в сессию датавремя авторизации этого пароля и в начале каждого запроса проверяете, прошёл уже от этого времени час или ещё нет. Если прошёл - дропаете авторизацию.
Всё, с протухшим паролем уже не войти. Остался только сбор мусора: с любой удобной периодичностью кроном удаляете просроченные записи из базы.
Другой вариант: смысл тот же, но в базе сохранять дату, до которой пароль валиден, а не когда был авторизован впервые.
|