лучшие практики для тайм-аутов сессии и постоянного входа в php - PullRequest
1 голос
/ 27 ноября 2011

У меня постоянный вход в систему на моем веб-сайте, поэтому, если пользователь проверяет «запомнить меня» во время входа в систему, установите файлы 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"));
}

Так что это работает во всех случаях (я думаю :)), но что мне интересно, какова лучшая практика, чтобы справиться с этим? Есть еще идеи?

1 Ответ

2 голосов
/ 27 ноября 2011

Вот один пример того, как создать постоянный вход в систему с помощью PHP, где база данных используется в сочетании с cookie, для проверки подлинности cookie:

http://jeremycook.ca/2010/03/28/creating-a-persistent-login-mechanism/

...