Что поддерживает сеанс php?
Поддерживаются ли сеансы только каждый раз, когда вы открываете страницу с помощью session_start();
или сохраняете ее на других страницах?
Пример (с 30 минутами):
1
пользователь обращается к странице с session_start(); Через 25 минут они получают доступ к другому session_start(); страница остается в живых
2
пользователь обращается к странице с session_start(); Через 25 минут они получают доступ к сеансу non-session_start();: страница сеанс остается в живых
Является ли 2 истинным?
Ответы
Ответ 1
В вашем браузере всегда есть файл cookie сеанса, когда вы получаете доступ к странице с session_start()
. Имя файла cookie будет PHPSESSID
, если веб-сайт использует PHP (хотя имя можно изменить). Этот файл cookie сеанса содержит идентификатор сеанса, который помогает браузеру поддерживать этот сеанс с сервером.
Вы можете проверить вручную, просмотрев любой сайт, на котором есть сеанс, а затем удалите куки файлы своего браузера, ваша сессия будет потеряна.
В вашем случае правильны как 1, так и 2.
2 правильно, потому что пользователь уже обратился к странице с session_start()
, и ваш идентификатор сеанса будет установлен в течение следующих 30 минут, и он будет присутствовать, даже если вы получаете доступ к странице, у которой нет сеанса.
ПРИМЕЧАНИЕ. Но страница, которую вы будете посещать, если содержит session_destroy()
, ваш сеанс будет уничтожен.
Ответ 2
Вызов session_start() просто дает вашему коду доступ к сеансу.
Что поддерживает сеанс, ваш браузер отправляет идентификатор сеанса (хранящийся в cookie) на сервер, независимо от того, используете вы его или нет.
Ответ: Они оба верны.
Ответ 3
Здесь соответствующая часть из документации
Когда посетитель обращается к вашему сайту, PHP будет проверять автоматически (если для параметра session.auto_start установлено значение 1) или по вашему запросу (явно через session_start()) был ли отправлен конкретный идентификатор сеанса с запросом. Если это так, ранее сохраненная среда воссоздана.
http://www.php.net/manual/en/intro.session.php
session_start() создает сеанс или возобновляет текущий на основе идентификатора сеанса, переданного через запрос GET или POST, или передается через файл cookie.
http://www.php.net/manual/en/function.session-start.php
Это означает, что если вы не вызываете session_start
, сеанс не возобновляется, и срок действия не продлевается.
Ответ 4
Session_start() является внутренним механизмом для доступа к сеансу php, а также для отправки cookie сеанса в браузер клиента.
- Случай 1 верен: поскольку пользователь обратился к странице с session_start(), а затем к другой подобной странице.
- Случай 2 действителен только в том случае, если время ожидания сеанса больше 25 минут между двумя посещениями.
В случае 2 сервер не будет отправлять cookie сеанса, его браузер, который содержит файл cookie в заголовке запроса.
Ответ 5
В данном случае время сеанса PHP в 30 минут является своего рода фактором "фокуса". Срок службы по умолчанию и почти универсальный сеанс составляет 1440 секунд или 24 минуты. Поэтому для большинства людей данные сеанса могли исчезнуть до отметки 25 минут.
В этой статье рассказывается о некоторых деталях, стоящих за работой PHP-сессий.
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_11909-PHP-Sessions-Simpler-Than-You-May-Think.html
Ответ 6
Он не должен ничего делать с веб-страницами, сеанс взаимодействует с вашим браузером с помощью идентификатора сеанса.
Идентификаторы сеансов, сгенерированные PHP, уникальны, случайны и почти невозможно догадаться, что делает его очень
трудно для злоумышленника получить доступ или изменить данные сеанса. Кроме того, поскольку данные сеанса хранятся
на сервере он не должен отправляться с каждым запросом браузера.
Чтобы запустить сеанс PHP в script, вы просто вызываете session_
start(). Если это новый сеанс, эта функция генерирует уникальный SID для сеанса и отправляет его в браузер в виде файла cookie с именем PHPSESSID (по умолчанию).
Однако, если браузер отправил PHPSESSID
cookie на сервер, поскольку сеанс уже существует, session_start() использует этот существующий сеанс:
session_start();
Ответ 7
Первый оператор верен, если вы не используете другое имя сеанса на обеих страницах.
Второй оператор является ложным.
Ответ 8
Если вам нужны сеансы на всех ваших страницах, session_start()
должен быть вызван на всех ваших страницах.
Следовательно, 1
есть CORRECT
, а 2
- CORRECT