2017-02-21 27 views
1

Я ищу основную разницу в ч/б сессии и файлы cookie и когда использовать сеанс и файлы cookie. Пожалуйста, уточните. СпасибоМогут ли сеансы работать без файлов cookie? Если да, то как работает сеанс без файлов cookie в PHP?

+2

[РНР Документах рассказать вам еще один вариант с печеньем] (http://php.net/manual/ о/session.idpassing.php) –

ответ

1

В качестве другого пользователя, связанного с, да, они могут, есть варианты конфигурации для PHP, чтобы не использовать файлы cookie и вместо этого полагаться на передачу идентификатора сеанса как части URL-адреса. Вы можете сделать это вручную или попросить PHP сделать это. Если PHP установлен для автоматического добавления идентификатора, то он использует буферизацию вывода для замены любых URL-адресов, которые он обнаруживает в вашем выводе, он делает это по умолчанию для определенных тегов (a, form и т. Д.)

См. Здесь: http://php.net/manual/en/session.configuration.php

session.use_cookies булево session.use_cookies определяет, будет ли модуль использовать куки для хранения идентификатора сессии на стороне клиента. По умолчанию 1 (включен).

session.use_trans_sid boolean session.use_trans_sid ли прозрачная поддержка sid включена или нет. По умолчанию 0 (отключено).

session.trans_sid_tags строка session.trans_sid_tags определяет, какие HTML тегов переписанных включать идентификатор сеанса, когда прозрачная поддержка с.и.д. включена. По умолчанию a = href, area = href, frame = src, input = src, form = form - специальный тег. добавляется как переменная формы.

внимание также на свои предупреждения:

Примечание: управление сеансами на основе URL имеет дополнительные риски безопасности по сравнению с печеньем на основе управления сеансом. Пользователи могут отправлять URL-адрес, который содержит активный идентификатор сеанса своим друзьям по электронной почте или пользователям, может сохранить URL-адрес, содержащий идентификатор сеанса, в свои закладки и получить доступ к вашему сайту с тем же идентификатором сеанса, например, всегда. Поскольку PHP 7.1.0, полный URL-адрес пути, например. https://php.net/, обрабатывается функцией trans sid. Предыдущий PHP обрабатывал только относительный URL-адрес. Переписать цель хосты определены session.trans_sid_hosts.

Cookies и сессии

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

Печенье

Cookies представляют собой способ хранения простых пар ключ/значение локально в хранилище браузеров, то может сохраняться между браузером перезагружается, но пользователь может стереть их. Печенье не может составить более 4 Кбайт (см What is the maximum size of a web browser's cookie's key?)

Из документов: http://php.net/manual/en/function.setcookie.php

$value = 'something from somewhere'; 

setcookie("TestCookie", $value); 
setcookie("TestCookie", $value, time()+3600); /* expire in 1 hour */ 
setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1); 

// Print an individual cookie 
echo $_COOKIE["TestCookie"]; 

Сессии

При вызове session_start() PHP проверяет куки, чтобы увидеть, если он уже установлен «сеанс id ', а если не задает один.Затем он использует это для идентификации пользователя/сеанса и позволяет временно сохранять данные на сервере, связанные с этим идентификатором. каждый раз, когда вы вызываете session_start, он заполняет $ _SESSION, и в конце каждого скрипта он сохранит это. Это означает, что страницы не могут загружаться одновременно, если они используют сеансы. некоторые хорошие примеры сессий можно увидеть здесь: https://www.w3schools.com/php/php_sessions.asp

Сессии не предел, как таковой, но ограничены другими факторами (см Maximum size of a PHP session)

Резюме

  • Сессии обычно использование файлов cookie
  • Данные cookie хранятся локально, данные сеанса хранятся на сервере
  • Размер файла данных для файлов cookie относительно невелик (4K), сессия Da ta ограничено только другими вещами.
  • Cookie данные только простые пары ключ/значение, данные сеанса также могут быть массивы, объекты