Мне нужны детали о сеансах. Каковы недостатки переменных сеанса? Между cookie и сеансами, какой из них лучше?
Я не буду касаться безопасности здесь, так как Infotekka уже вошла в нее совсем немного. Похоже, вы спрашиваете, следует ли использовать СЕССИЮ или COOKIE, как если бы они были альтернативами друг другу.
Они не. Они сервер (это была опечатка … но я оставляю ее, потому что это хороший каламбур) разные цели.
Поскольку HTTP не имеет статуса, PHP (и другие) предлагают возможность имитировать конечный автомат в вашем приложении с помощью сеанса. Если вы этого не сделали, вам нужно будет использовать POST / GET между каждой страницей, чтобы согласовать данные, и если пользователь самостоятельно перейдет на другую страницу, данные будут потеряны! Таким образом, без СЕССИИ вы не сможете зарегистрировать пользователя на своем сайте .. по крайней мере, не очень последовательно.
Подводя итог, SESSION используется для хранения данных между несколькими страницами вашего сайта без использования HTTP в течение длительного периода времени. Для этого он используется.
Я полагаю, вы могли бы использовать COOKIE для этого, но это гораздо сложнее, как cookie, особенно при работе с объектами, сериализованными для сеанса. COOKIE, которые также установлены, не могут быть доступны до загрузки следующей страницы и должны быть установлены перед любым выходом сценария (как и любой другой заголовок).
Сеансы должны быть именно такими: сеанс, который пользователь имеет, когда они садятся за свой компьютер, за то, что он долго работал на сайте. Когда отпуск заканчивается, сеанс заканчивается.
Файлы cookie должны использоваться для хранения простых данных в течение длительного периода времени. Если они много перейдут на сайт, они могут захотеть, чтобы их имя пользователя было запомнено для них, поэтому оно может храниться как файл cookie. Просто помните о проблемах безопасности, отмеченных Infotekka.
EDIT: Наконец, я должен добавить, что COOKIE передаются при каждом запросе страницы между пользователем и браузером. Больше Cookies означает больше времени загрузки страницы.
Это довольно открытый вопрос, но я думаю, что самое главное, что вы должны учитывать при использовании сеанса в PHP, – это то, насколько легко его захватить. Сегмент PHP хранит все его значения в кеше сервера, где он извлекается на основе идентификатора сеанса, который записывается в файл cookie на клиенте. Пока этот сеанс активен, клиенту, который подключается к этому идентификатору сеанса, будет предоставлен доступ к этому сеансу.
Есть некоторые страшные программы, такие как firesheep, которые могут показать вам, насколько легко набить идентификатор сеанса и сделать его своим. Если вы собираетесь использовать какую-либо защиту на этом сеансе, вам нужно убедиться, что ВСЕ, что вы делаете, находится по протоколу SSL, и вы должны создать второй уровень проверки, чтобы убедиться, что ваш сеанс не был захвачен.
Все сказанное, сеанс – отличное место для хранения постоянных значений, которые вам понадобятся для доступа к жизненному циклу приложения приложения пользователя.