Как реализовать функцию "запомнить меня" на php?

Пользователь

от cierra , в категории: PHP , 7 месяцев назад

Как реализовать функцию "запомнить меня" на php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от alisa.bahringer , 6 месяцев назад

@cierra 

Для реализации функции "запомнить меня" на PHP можно использовать механизм сессий.


В начале скрипта нужно вызвать функцию session_start(), чтобы начать или возобновить сессию. Затем можно сохранить данные пользователя в суперглобальном массиве $_SESSION.


Например, при успешной аутентификации пользователя можно сохранить его идентификатор или другую информацию, необходимую для идентификации пользователя:

1
2
3
session_start();
// после успешной аутентификации:
$_SESSION['user_id'] = $user_id;


При последующих запросах от пользователя можно проверить, есть ли у него сохраненная сессия и идентифицировать его:

1
2
3
4
5
6
7
session_start();
if (isset($_SESSION['user_id'])) {
    $user_id = $_SESSION['user_id'];
    // делать что-то с информацией о пользователе
} else {
    // пользователь не аутентифицирован
}


Чтобы сделать "запомнить меня" функциональность, нужно использовать также cookies. В случае успешной аутентификации можно создать persistent cookie, которая будет хранить идентификатор пользователя или другую информацию:

1
2
3
// после успешной аутентификации:
$expires = time() + 3600 * 24 * 30; // например, на 30 дней
setcookie('user_id', $user_id, $expires);


На странице с авторизацией можно проверить наличие этой cookie и, при ее наличии, автоматически аутентифицировать пользователя:

1
2
3
4
5
6
if (isset($_COOKIE['user_id'])) {
    $user_id = $_COOKIE['user_id'];
    // делать что-то с информацией о пользователе
} else {
    // пользователь не аутентифицирован
}


Таким образом, с помощью сессий и cookies можно реализовать функцию "запомнить меня" на PHP.