Несогласованное кэширование в браузере переменных сеанса - какие-либо решения? - PullRequest
1 голос
/ 19 февраля 2009

Почему мои переменные сеанса здесь сбрасываются?

Я отправляю форму с помощью кнопки отправки и создаю переменные сеанса значений, чтобы их можно было перенести на другие страницы. Все хорошо Если я теперь переместлюсь назад и вперед между формой и обработчиком формы, используя кнопки браузера (как, вероятно, когда-нибудь сделает пользователь), Firefox и Opera будут вызывать переменные сессии и могут заполнять обработчик формы. IE и Safari, однако, нет. Что я могу с этим поделать?

Firefox продемонстрировал бы проблему, если бы я сегодня утром не вставил в заголовочный файл следующее:

header("Cache-Control: no-cache");
header("Expires: -1");

Я читал, что вторая строка заголовка - header("Expires: -1"); - также должна быть исправлением для IE, но, похоже, это не так. IE8 / Safari по-прежнему показывают проблему. Опера не нуждается в этом вообще. Если это проблема перезагрузки, что мне нужно добавить в заголовок, чтобы принудительно перезагрузить IE и Safari?

Спасибо

1 Ответ

2 голосов
/ 21 февраля 2009

Ваши переменные сеанса не потеряны. Скорее всего, происходит то, что при возвращении ни один из браузеров не будет перезагружать форму с вашего сервера (со значениями по умолчанию, указанными в переменных сеанса.) Тем не менее, некоторые браузеры будут в восторге от этого и будут помнить сами, что ценит поля формы в последний раз, когда эта конкретная форма была в последний раз, и заполните их для вас. IE не будет.

В любом случае рекомендуется отправлять формы через POST, а сервер должен отвечать на POST , перенаправляя (HTTP 302) на следующую страницу, а не обрабатывая следующую. страница напрямую. Выпустив перенаправление, любая попытка пользователя вернуться назад попросит его / ее подтвердить, действительно ли они хотят повторную отправку формы, что может быть более серьезной проблемой, чем просто отсутствие предварительно заполненных значений в форме. , Я догадываюсь, каковы ваши настоящие намерения, но если вы действительно хотите, чтобы пользователь мог отправлять несколько форм подряд (повторяющаяся задача), просто визуализируйте форму еще раз на следующей странице после перенаправления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...