Если флажок запомнить меня установлен, вы устанавливаете cookie в системе пользователя со случайной строкой. E.g.:
$cookie = array(
'name' => 'remember_me_token',
'value' => 'Random string',
'expire' => '1209600', // Two weeks
'domain' => '.your_domain.com',
'path' => '/'
);
set_cookie($cookie);
Вы также сохраняете эту случайную строку в таблице users
, например, в столбце remember_me_token
.
Теперь, когда пользователь (который еще не вошел в систему) пытается получить доступ к странице, требующей аутентификации:
- вы проверяете, есть ли в его системе файл cookie с именем токена
remember_me
- если он есть, вы проверяете базу данных, если есть запись с таким же значением
- если это так, вы воссоздаете сеанс этого пользователя (это означает, что он вошел в систему)
- показать страницу, которую они посетили
Если одно из указанных выше требований не выполнено, вы перенаправляете их на страницу входа.
По соображениям безопасности вы можете обновлять случайное значение remember_me_token
каждый раз, когда пользователь входит в систему. Вы также можете обновлять дату истечения срока действия cookie каждый раз, когда пользователь входит в систему. Таким образом он будет оставаться в системе. *
Было бы слишком много работы, чтобы написать весь код для вас, но я надеюсь, что это поможет вам реализовать эту функцию самостоятельно. Пожалуйста, прокомментируйте, если у вас есть какие-либо вопросы. Удачи.