Содержимое переменной сеанса и кнопка «Назад»

Я нахожусь на странице 1 серии страниц и сохраняю некоторые данные в Session. Теперь я щелкаю ссылку на странице 1 и перехожу на страницу 2. Я снова сохраняю некоторые данные в ту же переменную сеанса. Я делаю это еще несколько раз, сохраняя данные в одну и ту же переменную Session. Теперь я несколько раз нажимаю кнопку «Назад», возвращаясь на предыдущую страницу серии. Какие данные будут находиться в переменной Session? Данные, сохраненные с последней страницы в серии, или данные со страницы, на которой я сейчас сижу, с помощью кнопки «Назад».


person Dick    schedule 29.08.2011    source источник
comment
какой язык вы используете? покажи нам свой код   -  person JMax    schedule 29.08.2011


Ответы (4)


Все данные, сохраненные в сеансе, остаются в переменной сеанса до тех пор, пока вы не удалите их или пока сеанс не истечет. Назад/вперед/и т. д. в сеансе не влияет на содержимое переменных сеанса - если, конечно, при загрузке страницы вы не изменяете содержимое этих переменных.

person JJ.    schedule 29.08.2011
comment
Комментарии ниже неверны. На страницах, доступ к которым осуществляется с помощью кнопки «Назад», будет отображаться информация о переменной SESSION, которая была захвачена в то время. Я могу подтвердить это как разработчик Coldfusion. Единственным исключением является Mobile Safari, который действует так, как предлагается в комментариях ниже. Большинство браузеров не возвращаются на сервер (данные извлекаются из кеша) при нажатии кнопки «Назад». Мобильный Safari не подчиняется этой парадигме. В настоящее время я пытаюсь найти способ обойти это. Я дам вам знать, если я найду решение... - person Charles Robertson; 24.06.2014
comment
@CharlesRobertson: вопрос заключался не в том, что будет отображаться после нажатия кнопки, а в том, что будет сохранено в переменной сеанса (на стороне сервера). Значение на стороне сервера не изменится, если щелкнуть назад, даже если браузер продолжит отображать кэшированные старые данные в клиенте. - person JJ.; 18.04.2018
comment
да. Я согласен. Я думаю, что это то, что я говорю в предыдущем комментарии, хотя это было опубликовано 4 года назад... - person Charles Robertson; 18.04.2018

Попробуйте: (при условии, что вы используете php)

page1.php :

<?php
session_start();
$_SESSION['page1'] = 'from page1';

var_dump($_SESSION['page1']);
var_dump($_SESSION['page2']);
?>
<br /><a href="page2.php">page 2</a>

page2.php :

<?php
session_start();
$_SESSION['page2'] = 'from page2';

var_dump($_SESSION['page1']);
var_dump($_SESSION['page2']);

Перейдите на страницу1, нажмите ссылку на страницу2, нажмите назад. Вы увидите, что $_SESSION['page2'] имеет значение, которое вы установили.

person Benjamin Crouzier    schedule 29.08.2011

Я предполагаю, что вы говорите о PHP - если это так, то данные, сохраненные в $_SESSION, не меняются при переходе на другую страницу, поскольку данные сеанса хранятся на сервере. Короче говоря: у вас всегда будут последние сохраненные данные в сеансе, независимо от навигации.

person bat    schedule 29.08.2011

Какие данные будут находиться в переменной Session?

Какие бы данные вы туда ни помещали, пока вы их не перезапишете (или не удалите) или пока не истечет срок действия сеанса. Независимо от того, что пользователь делает со своим браузером или как он переходит с одной страницы на другую, сеанс не контролируется пользователем/браузером. Он контролируется вашим кодом на стороне сервера.

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

Это полностью зависит от вас, как вы хотите, чтобы это работало.

person David    schedule 29.08.2011