Вопрос

Я никогда не хотел позволять пользователю оставаться входом в систему в течение любого времени, поэтому я никогда не видел использования для "Запомните меня" особенность. Я начал думать о том, как это делается, хотя и хотел бы пояснить.

В настоящее время я храню свои сеансы в базе данных. То, что всегда озадачивало мне, так это то, как, хотя я явно не устанавливаю печенье, один находится в моем браузере. Я немного смущен, потому что сеанс - это сеанс, а печенье - это печенье. Я не вижу, как сеанс устанавливает файл cookie.

Я также хотел бы знать, будет ли просто настройка другой переменной сеанса в массиве сеансов, чтобы поддерживать внедрение пользователя, достаточным или мне все еще нужно установить cookie?

Это было полезно?

Решение

То, что всегда озадачивало мне, так это то, как, хотя я явно не устанавливаю печенье, один находится в моем браузере.

Обработчик сеанса должен определить, какой сеанс принадлежит тому, к какому пользователю.

Подавляющее большинство библиотек сессий делают это, установив файл cookie.

(IS) Настройка другой переменной сеанса в массиве сеансов, чтобы ввести в систему входа в систему было бы достаточным, или мне все еще нужно установить файл cookie?

Большинство сессионных библиотек, установленных Сеанс cookie. Анкет Это куки без указанного времени истечения. Срок действия истекает, когда браузер закрывается и недостаточно для реализации функции «Помни меня» (которая, как ожидается, будет сохраняться в результате перезапуска браузера, поэтому должно иметь явное время истечения).

Другие советы

Чтобы вытащить данные сеанса обратно из вашей базы данных, необходим ключ. Это называется идентификатором сеанса.

Идентификатор сессии должен где -то хранить. Либо как часть строки URL, которую клиент публикует обратно, либо, чаще, в cookie на клиенте. Когда запрос будет опубликован, сеанс считывает значение из файла cookie и знает, какую запись отступать от хранения сеанса.

Это происходит автоматически.

Единственная причина использования сеанса - это если данные, которые вы хотите сохранить, превышают 4 КБ (ограничения браузера); Или, если время, необходимое для извлечения данных с вашего сервера, больше, чем читать их из хранилища сеанса.

Если объем данных, которые вы храните, меньше 4 КБ, я настоятельно рекомендую вам просто установить это в печенье с самого начала. Я обычно храню такие вещи, как идентификатор пользователя, имя пользователя и пару других атрибутов. Имейте в виду, что это тривиально осмотреть ценность файлов cookie, поэтому эта информация должна быть зашифрована, прежде чем отправиться к клиенту.

Другое дело, если время запроса, чтобы вытащить данные, необходимые вам из исходного источника, невелико, то решите сделать это вместо того, чтобы разместить их на сессии. Таким образом, вы получаете его только тогда, когда вам действительно это нужно, а не с каждой загрузкой страницы.

Объясняя связь между файлом cookie и сессией:

PHP использует cookie, чтобы уникально идентифицировать сеанс для каждого пользователя. Это единственный более надежный способ, потому что cookie отправляется каждый раз, когда вы запрашиваете файл с сервера. Используя токен в файле cookie, который также является идентификатором сеанса, PHP будет искать каталог TMP, чтобы увидеть, существует ли сеанс. Если сеанс существует, переменные загружаются из правильного файла, и вы сможете получить доступ к переменным в этом сеансе.

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

Основная реализация сеанса PHP устанавливает файл cookie. Вы можете изменить это и сделать значение идентификатора сеанса в строке запроса, но я не рекомендую его. Вы не используете cookie, PHP делает. Он ссылается на значение идентификатора сеанса, сохраненное в файлах cookie, чтобы выполнить поиск данных сеанса.

Я также хотел бы знать, если бы просто установить другую переменную сеанса в массиве сеансов, чтобы поддерживать вход пользователя, будет достаточно, или мне все равно нужно установить файл cookie?

Как только пользователь закрывает браузер, сеанс убит, а печенье удалено. Я не верю, что какой -либо механизм выходит, чтобы сохранить ценность сессии, и на то есть веские причины.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top