Прочитал https://htmlweb.ru/php/example/avtorizacija2.php, но не понял как сделать так чтобы при входе на сайт автоматически отображался аккаунт пользователя, если пользователь не вышел из него в прошлый раз посещения сайта (ну к примеру как тут на stackoverflow
Чтобы при каждом посещении сайта пользователь был авторизован, если он до этого не выходил с аккаунта.
$token = bin2hex(openssl_random_pseudo_bytes(10));
полученный таким образом токен сохраняем в куку и в БД.
при заходе на сайт, если нет авторизации, но есть кука с таким значением, то найти ее в бд, и авторизовать пользователя. если куки нет или значение не найдено, то показать форму авторизации
после использования токена поменять на новый
Механизм со стороны фронтенда очень прост. После регистрации или входа в бэка приходит token. Его мы кидаем в localStorage(localStorage.setItem('token', token)). При выходе пользователя мы удаляем(localStorage.removeItem('token')). При входе мы смотрим есть этот токен(localStorage.getItem('token')). Если он есть, то авторизируем пользователя, если нет, то кидаем на страницу авторизации.
Вообще-то практика вечного авто-логина не очень хорошая идея. Достаточно представить, что пользователь Вашего сайта будет заходить из какого-нибудь Интернет-кафе или с чужого компьютера и забудет сделать logout... Но, условия задачи ставите Вы - Вам и все риски в руки :)
Итак, мой алгоритм:
session_id(уникальный ID его сессии он же токен) - генерируете его по своему усмотрению каким угодно алгоритмом. Например md5(time()+<user_id>). Так же генерируем пользователю уникальный <cookie_id><session_id> и <cookie_id> в БД. Также <session_id> сохраняем в $_SESSION, а <cookie_id> в браузер. Для выполнения условий задачи выставляем для <cookie_id> неограниченное время жизни.<session_id> в $_SESSION, если есть проверяем что пользователь с таким <session_id> в БД существует.<session_id> в $_SESSION нет - значит истекло ее время жизни установленное в php.ini$_COOKIE и смотрим есть ли там <cookie_id>, проверяем, что есть пользователь в БД с таким <cookie_id>.У меня так сделано на большом кол-ве живых проектов. Только у меня еще ограничено время жизни cookie_id, чтобы избежать вечного авто-логина.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей