Не удается ли получить файл cookie пользователя и получить его значение в качестве переменной PHP, чем для получения переменной сеанса?Следует ли избегать использования файлов cookie, если это возможно?
ответ
Нет. В чистых технических терминах это, скорее всего, обратное, так как для инициализации сеанса будет немного незначительных накладных расходов.
Данные cookie поступают как часть HTTP-запроса независимо от того, что, и PHP читает его в $ _COOKIE по умолчанию. Так что это всегда будет. $ _SESSION требует, чтобы вы в какой-то момент вызывали session_start()
.
Однако разница в производительности между двумя будет нелепо малой и не стоит беспокоиться.
Я бы поверила, что это будет примерно то же самое, за исключением того, что сессия будет поступать с диска. Кроме того, сеанс происходит из файлов cookie в любом случае.
С точки зрения безопасности, действительно ли вы хотите хранить информацию на стороне клиента? Как правило, я не буду хранить вещи с клиентом.
Сессия по умолчанию уже поддерживается куки-файлом с именем phpsessionid
(так что сервер может идентифицировать клиента и связывать его с одним из сеансов в памяти сервера), поэтому ваша озабоченность на самом деле не имеет смысла.
Использовать только $_SESSION
вместо того, чтобы изобретать его с помощью «пользовательского cookie».
переменная сеанса в PHP не представляет собой абстракцию по простым куки. –
Это зависит только от цели «пользовательского cookie». Его вопрос, однако, не сформулирован именно так. – BalusC
В общем, вы не должны беспокоиться о скорости поиска переменной сеанса или cookie.
Однако Вы должны быть осведомлены о различиях между ними:
Сессии хранятся на сервере, а это значит, клиенты не имеют доступа к информации, которую вы храните о них. Данные сеанса, хранящиеся на вашем сервере, не должны передаваться полностью с каждой страницы; клиентам просто нужно отправить идентификатор, и данные загружаются с сервера.
С другой стороны, Cookies хранятся на клиенте. Они могут быть прочными в течение длительного времени и позволят вам работать более плавно, когда у вас есть кластер веб-серверов. Однако, в отличие от сеансов, данные, хранящиеся в файлах cookie, полностью передаются с каждым запросом страницы.
+1 для «данных, хранящихся в Cookies, передается в полном объеме с каждым запросом страницы» ... и, возможно, каждый запрос на изображение, скрипт и таблицу стилей. Вот почему вы хотите сохранить минимальный размер файлов cookie. Если у вас большой объем данных, храните его на стороне сервера и выталкивайте его из файла с меньшим количеством файлов cookie ID. – bobince
Почему бы вам просто не сохранить идентификатор в файле cookie и получить необходимую информацию для этого идентификатора из базы данных? Куки-файлы в первую очередь широко используются не по соображениям производительности, а по их постоянству и независимости сервера. – Nirmal
В некоторых браузере это не представляется возможным хранить куки, чтобы избежать этой проблемы, вы можете передать (SID идентификатором сессии) или какие-то скрытые, заполнены значения TextBox, а не печенье, используя GET и методы POST ,
Это будет очень очень громоздкая и утомительная работа. Что произойдет, если пользователь захочет вернуться в домен? И что произойдет, если пользователь изменит URL-адрес в случае запроса GET? – Nirmal
Если пользователь изменит sid в URL-адресе, это будет похоже на изменение файла cookie (что возможно) –
Хотя примерно эквивалент с точки зрения манипуляций в коде, файлы cookie и переменные сеанса очень разные.
Cookies хранятся в браузере и передаются на веб-сервер с каждым запросом. Если вы храните в браузере пользователя большие файлы cookie или много маленьких, вы увеличиваете размер каждого запроса/ответа, что делает их более дорогим (пропускная способность) и медленнее (время). Кроме того, все, что хранится в cookie, видимо для клиента, поэтому не храните там ничего чувствительного.
Сессионные переменные, с другой стороны, имеют свои собственные проблемы. Поскольку они хранятся в контексте сервера, они не распространяются между кластерными серверами.Если сервер/служба сбрасывается или сеанс пользователя заканчивается, все, что было сохранено в коллекции session [], теряется. Сохранение больших данных в переменной сеанса приводит к снижению производительности на сервере, что может стать очень плохим, если у вас много трафика. Для переменных сеанса требуется файл cookie, который сервер использует для идентификации сеанса пользователя. Это возможно для пользователя, чтобы изменить их кук, чтобы получить доступ к данным, хранящимся в других сеансах, хотя это было бы довольно Freakin' трудно сделать с любым типом значения, так как идентификатор сессии случайным образом, бессмысленные идентификаторами псевдо.
В конечном счете, все это дерьмо должны храниться в базе данных в любом случае. Сессии - это ленивое удобство, которого следует избегать при разработке любого надежного приложения. Куки-файлы должны использоваться минимально - как правило, я храню указатель в файле cookie, который помогает мне идентифицировать пользователя (похожий на cookie sessionID, но специфичный для приложения), но все остальное идет в базе данных. Это дает вам доступность серверных агностиков, безопасное хранилище, срок службы данных, установленные вашим приложением, а не конфигурацию сервера, хорошую возможность запроса и отчета и т. Д.
Базы данных легко выполняются правильно. Там не много, много причин, что любая информация о состоянии вы собираете должна храниться в базе данных, и нет веских причин не к.
- 1. Следует ли избегать использования диапазона для цикла, если это возможно?
- 2. следует избегать использования retf?
- 3. Следует ли избегать использования рефлекса в Go?
- 4. избегать использования, если предложение
- 5. Когда следует избегать использования будущего в Скале
- 6. лучше избегать использования оператора мод, когда это возможно?
- 7. Вызов метода службы wcf из другого службы wcf: хороший, плохой или следует избегать, если это возможно?
- 8. Когда следует избегать использования `seq` в Clojure?
- 9. Следует ли избегать Guavas Ordering.usingToString()?
- 10. Почему следует избегать использования Runtime.exec() в java?
- 11. Должен ли я избегать магических струн, насколько это возможно?
- 12. Когда следует избегать memcache?
- 13. Следует ли избегать упоминания в Haskell?
- 14. Укоротить функцию, которую следует избегать, если операторы
- 15. Производительность DSP, чего следует избегать?
- 16. Следует ли избегать объявления переменных на C++?
- 17. Следует избегать двусторонних отношений?
- 18. Какие символы следует избегать/дезинфицировать для имен файлов?
- 19. query_posts() следует избегать?
- 20. «Плохие» расширения файлов, которых следует избегать на сайте загрузки файлов?
- 21. Дублировать окончательную декларацию, следует ли ее избегать?
- 22. Следует ли избегать строк JSON-LD?
- 23. следует ли избегать использования управляемой фасоли весны, когда это не нужно?
- 24. Android MVP - Следует избегать использования ссылок R.string в презентаторе?
- 25. Назначение «Двойной» - следует ли его избегать?
- 26. Когда следует избегать методов расширения?
- 27. Следует ли избегать `startActivity` вне класса Activity?
- 28. Правильно ли избегать использования сторонних драгоценных камней?
- 29. Возможно ли это без использования javascript?
- 30. Когда следует избегать слабых типов?
Звучит хорошо, я буду использовать сессии независимо, но я хотел бы добавить больше вещей в моих печений, но у меня был неудачный опыт один раз, это был JavaScript с помощью куки, хотя и не PHP, моя страница PHP будет загружаться, то JS будет читать cookie и заказывать позицию некоторых элементов на странице, основываясь на данных cookie, и это сильно замедляет страницу при загрузке страницы. – JasonDavis
Это просто неправда. Файлы cookie несут производительность за пределами жизненного цикла страницы - они считываются до того, как страница обрабатывается и записывается при отправке ответа. Переменные сеанса подвержены попаданию на сервер, не влияя на части запроса/ответа цикла, только на время рендеринга страницы. Это яблоки и апельсины. –