Сеансы полезны, если вам нужно перенаправить пользователя обратно на страницу формы, а не просто отображать его снова. Вероятно, было бы лучше просто не перенаправлять пользователя, если это возможно. POST-запросы обычно имеют меньше проблем, чем GET-запросы, когда дело доходит до кешей. Некоторые браузеры виновны в том, что они немного оптимистичны в своем кеше, и тогда вам придется добавить кеш-информацию на свою страницу, если вы этого еще не сделали.
Также было бы лучше не нарушать их представления о том, что будет делать кнопка обновления. Как пользователь, я ожидаю, что страница выдаст мне тот же результат, если обновлять страницу в 99% случаев. (Заметными исключениями являются формы с CAPTCHA и регистрационные формы, которые все еще должны хорошо реагировать на повторную подачу). Большинство браузеров спрашивают пользователя, уверены ли они, что хотят повторно отправить форму.
Если вы хотите использовать сеансы, вам нужно будет использовать функцию session_start () на обеих страницах. На странице формы, чтобы получить информацию о сеансе, и на странице отправки, чтобы сохранить ее в сеансе. Я не рекомендовал бы хранить весь массив $ _POST в переменной сеанса, вы не знаете, что там находится и сколько места это займет. Вы можете посмотреть на ответ richsage о том, как хранить информацию о $ _POST в $ _SESSION. Вы также можете подумать о том, чтобы сохранить нужные поля в массиве и использовать массив для сохранения информации следующим образом:
$allowed_fields = array('name', 'company', 'email');
foreach($allowed_fields as $field) {
if(isset($_POST[$field])) {
$_SESSION[$field] = $_POST[$field];
}
}
При выводе обратно на форму обязательно экранируйте с помощью чего-то вроде htmlspecialchars () или htmlentities () "> htmlentities (), например так:
<input type="text" name="myField" value="<?php echo htmlspecialchars($_SESSION['myField']); ?>" />
В противном случае ваш код может быть подвержен XSS (межсайтовый скриптинг) .