Я ищу основную разницу в ч/б сессии и файлы cookie и когда использовать сеанс и файлы cookie. Пожалуйста, уточните. СпасибоМогут ли сеансы работать без файлов cookie? Если да, то как работает сеанс без файлов cookie в PHP?
Могут ли сеансы работать без файлов cookie? Если да, то как работает сеанс без файлов cookie в PHP?
ответ
В качестве другого пользователя, связанного с, да, они могут, есть варианты конфигурации для 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 данные только простые пары ключ/значение, данные сеанса также могут быть массивы, объекты
[РНР Документах рассказать вам еще один вариант с печеньем] (http://php.net/manual/ о/session.idpassing.php) –