У меня постоянный вход в систему на моем веб-сайте, поэтому, если пользователь проверяет «запомнить меня» во время входа в систему, установите файлы cookie, чтобы пользователь постоянно оставался в живых в этом браузере.
Существует два маршрута для доступа к любой странице. Если это не ajax-запрос, запросы проходят через index.php, но если запрос ajax, это просто ajax.php.
Для обработки запроса пользователя сначала я проверяю сессию, что независимо от того, сохранен ли ID пользователя или нет, если сессия удерживает пользователя, проблем нет, запрос будет завершен.
Но если в сеансе нет текущего идентификатора пользователя, я проверил файл cookie для автологина, если я могу войти в систему пользователя через cookie, принудительно войти в систему с данными cookie и установить Session с идентификатором пользователя, пока пользователь ничего не делает ..
Прямо сейчас, чтобы справиться с этим, я делаю тот же процесс в верхней части index.php и ajax.php, как это;
class SessionManager
{
private function __construct()
{ ; }
public static function getSessionUser()
{
$user = NULL;
if(isset($_SESSION['user']))
$user = $_SESSION['user'];
else
{
/* Get username from cookie, and login it and set Session with user if it's possible otherwise do nothing Session is empty */
getUserFromCookie();
if(isset($_SESSION['user']))
$user = $_SESSION['user'];
}
return $user;
}
}
In index.php;
$user = SessionManager::getSessionUser();
if(!isset($user))
{
include dirname(__FILE__)."/controllers/login_controller.php";
}
и в ajax.php;
$user = SessionManager::getSessionUser();
if(!isset($user))
{
echo json_encode(array("error" => true, "type" => NOT_ALLOWED, "message" => "User should login"));
}
Так что это работает во всех случаях (я думаю :)), но что мне интересно, какова лучшая практика, чтобы справиться с этим? Есть еще идеи?