Настройка сессий php на 1 месяц (или до тех пор, пока пользователь явно не выйдет из системы) - PullRequest
1 голос
/ 29 октября 2011

У меня быстрый вопрос о сессиях php. Если я хочу, чтобы сеанс длился месяц (или пока пользователь явно не выйдет из системы), я изменяю следующие настройки php.ini: session.gc_maxlifetime = 2592000 и session.cookie_lifetime = 2592000 с их значениями по умолчанию 1440 и 0 соответственно. Правильно?

Спасибо.

Ответы [ 2 ]

1 голос
/ 29 октября 2011

session.cookie_lifetime из 0 сохранит cookie до перезапуска браузера (в основном для всего сеанса).

Установка для session.gc_maxlifetime такого высокого значения будет означать, что у вас будет много устаревших сеансов на вашем сервере, и это может быть проблемой, если у вас большое количество сеансов - обычно сеансы хранятся в системной папке / tmp. Когда эта папка, обычно на * nix машинах, заполняется, это может вызвать проблемы на машине - процессы начинают блокироваться, поскольку по какой-то причине не удается создать временные файлы. (Вы можете изменить session.save_path на что-то отличное от / tmp, чтобы у вас не было этой проблемы - особенно на общих хостах).

Кто-то, тем не менее, с большим опытом работы с конфигурациями серверов, может знать, что существуют другие таймауты, такие как настройки Apache и TCP, которые могут превзойти это значение независимо от того, насколько высоко вы его создаете.

Я полагаю, что вы в основном спрашиваете о функции Remember Me, которая позволит кому-либо войти в систему без необходимости запоминать свое имя пользователя / пароль и запоминать точное состояние (сессия 1 месяц).

Функция Remember Me может быть реализована с помощью вращающегося файла cookie аутентификации, для которого установлен следующий токен в известной серии на основе учетных данных пользователя для входа в систему.

Функция 1-месячного сеанса может быть реализована путем сохранения состояния сеанса в постоянном кэше (файловый кэш, база данных, что-то более сложное, например, Toyko Tyrant).

0 голосов
/ 29 октября 2011

Если вы запрашиваете «Запомнить меня», самое простое решение:

После успешного входа пользователя вы создаете случайный хэш и сохраняете его в файле cookie (в браузере пользователя).и в базе данных (присоединяется к идентификатору пользователя)

Поэтому, когда пользователь сначала вызывает ваш скрипт, вы проверяете хеш, если хеш присутствует в базе данных, вы автоматически входите в систему, не спрашивая имя пользователя / пароль, иначе выспросить пользователя / пароль

В первом варианте вы «обходите» вход в систему, потому что хеш идентифицирует пользователя.Если пользователь явно выходит из вашего сайта, просто удалите сеанс и сбросьте хэш пользователя (на стороне базы данных) ...

Используя этот метод, вы также можете установить ограничение по времени, в cookie просто установить продолжительность cookie,сторона db добавляет ограничение по времени, и если пользователь входит в систему с использованием хеша по сравнению с ограничением по времени, вы не разрешаете вход в систему с аутентификацией:)

Надеюсь, что это решит ваш вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...