Подтвердить что ты не робот

Когда следует использовать переменные сеанса вместо файлов cookie?

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

4b9b3361

Ответ 1

  • Сеансы хранятся на сервере, что означает, что клиенты не имеют доступа к информации о них, которую вы храните. Данные сеанса, хранящиеся на вашем сервере, не должны передаваться полностью с каждой страницы; клиенты просто должны отправить идентификатор, и данные загружаются с сервера.

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

  • Избегайте хранения данных в куки

    • Это может быть увидено, прочитано и изменено конечным пользователем или перехвачено теми, кто имеет гнусные намерения. Вы не можете доверять никаким данным в куки, кроме "session_id".
    • Это увеличивает пропускную способность, если вы добавляете 1к данных на запрос страницы на пользователя, что может увеличить пропускную способность на 10-15%. Возможно, это не дорого с точки зрения $$, но это может быть с точки зрения производительности. Это фактически уменьшит пропускную способность вашего сервера на 10-15%, т.е. Может потребовать больше серверов.
  • То, что вы можете хранить в данных сеанса, зависит от количества данных и количества пользователей, которые у вас есть. no_of_users * size_of_session_data должно быть меньше свободной памяти, доступной на вашем сервере.

Ответ 2

  • Всегда используйте сессии
  • Используйте куки, только если вам нужны более длительные сеансы входа в систему - затем добавьте куки с зашифрованным идентификатором пользователя.

Ответ 3

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

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

Ответ 4

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

Ответ 5

Файлы cookie находятся на стороне клиента, а сеансы - на стороне сервера.

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

Используйте данные сеанса для больших порций данных (для многих систем могут храниться объекты, структуры данных и т.д.) И для тех, которым вы должны доверять - например, для статуса авторизации и т.д. В общем, используйте данные сеанса для хранения больших данных состояния.

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

Ответ 6

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

В противном случае, если вы храните небольшие объемы данных, файл cookie подойдет.

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

Ответ 7

Один из недостатков сеансов PHP - это то, как работает обработка сеанса. В частности, только один процесс/запрос может иметь сеанс, открытый для записи за раз. При

session_start() 

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

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

session_write_close()

как можно скорее, чтобы освободить сеанс, это частичная работа.

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

Я рекомендую избегать сеансов PHP.

Ответ 8

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

Ответ 9

Используйте сеансы только в том случае, если данные слишком велики для файлов cookie или если данные настолько велики, что это может снизить производительность, если вы используете файлы cookie.

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

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

Ответ 10

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

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

Это может помочь: Cookies (php.net)

Ответ 11

Ваш определенный гид

NB. Файл cookie сохраняется в браузерах пользователей, а сеанс хранится на компьютере вашего хост-сервера.

Когда использовать

  1. Используйте cookie файл, если вы хотите, чтобы ваше приложение всегда запоминало пользовательские данные, даже если они закрыли свои браузеры. Например, всякий раз, когда вы вводите www.facebook.com, вы переходите в свою учетную запись, даже если ваш браузер был закрыт и повторно открыт.

    Потому что все данные, хранящиеся в сеансе, удаляются после закрытия браузера.

  2. Используйте куки файл, когда информация, которую нужно сохранить, намного больше, чем обычно.... Если у вас есть более крупная пользовательская база, например, Facebook, подумайте о том, как она будет выглядеть при хранении всех пользовательских сессий на хост-компьютере.

  3. Используйте сеанс, когда пользовательская информация, которая будет сохранена, не больше, чем обычно, и вы не хотите, чтобы публика имела доступ к вашим пользовательским переменным...

Ответ 12

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

Сессия - это искусственное понятие, и у HTTP нет этого понятия. Он создается веб-серверами, чтобы помочь веб-разработчикам передавать информацию по запросам, такую как информация об учетной записи пользователя, корзины покупок, данные форм и т.д. Файл cookie передается стандартными заголовками HTTP.

Информация, которую вы сохраняете в сеансе, а не в cookie, зависит от вас. Обычно вы помещаете в файлы cookie файлы, которые вы хотите сохранить в течение сеансов после того, как пользователь закрывает свой браузер. Может быть, запоминание токенов аутентификации для реализации функции "запомни меня" или прошлые действия пользователя для персонализации его/ее опыта. Держите эту информацию маленькой и "ссылочной", то есть это могут быть просто идентификаторы, которые относятся к более богатой информации, которую вы храните на стороне сервера. Помните, что сторона клиента более уязвима для вредоносных программ, поэтому не храните пароли и конфиденциальную информацию.

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