передача переменной после POST в PHP - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть index.php в корневой папке со всеми командами.На странице URL "root /? A = a & b = b" у меня есть форма для POST, чтобы добавить новый элемент.

После отправки формы страница должна вернуться к "root /? A = a & b".= b "и отображается новый элемент (в настоящее время я использую заголовок ('Location:'. $ _SERVER ['HTTP_REFERER'])).

Тем временем на странице" root /? есть div "?а = а & Ь = Ь».Если страница возвращается после отправки формы, она должна быть показана;в противном случае (перейдите на эту страницу), он должен быть скрыт.

В настоящее время я добавляю «& success = true» в конце URL-адреса.Но после отправки формы в URL появляется «& success = true», и если я обновляю страницу, хотя не возвращаюсь после отправки формы, div все равно отображается.

Интересно, есть лиспособ передать переменную вместо изменения URL после отправки формы.Кроме того, я не хочу использовать $ _SESSION.

Спасибо за помощь!

Ответы [ 3 ]

2 голосов
/ 09 ноября 2011

Это распространенная проблема, и самый чистый метод, который я знаю, чтобы обойти эту проблему при использовании Post-Redirect-Get , состоит в том, чтобы установить cookie в ответе на POST, а затем немедленно удалить его в ответе. ПОЛУЧИТЬ.

0 голосов
/ 09 ноября 2011

В этом ответе предполагается, что вы выполняете POST и перенаправляете назад без какого-либо вмешательства пользователя. Если на странице обработки формы требуется действие пользователя, большая часть этого не будет применяться ...

Почти все формы, которые я пишу, пишут на один и тот же URL (используйте action = ""). Это делает жизнь намного проще. Я настоятельно рекомендую использовать HTP_REFERER, так как это необязательное поле, полностью зависящее от браузера. Большинство не отправляют рефереров или отправляют их только при определенных обстоятельствах.

Я также призываю вас пересмотреть вопрос о том, действительно ли необходимо перенаправлять данные из процессора форм. Я подозреваю, что вы делаете это, чтобы предотвратить случайное повторное размещение пользователем того же сообщения, но все современные браузеры выдают нормальное сообщение, если пользователь пытается обновить запрос POST, поэтому в этом нет необходимости. Если вы не перенаправляете из обработчика форм, вы можете отобразить сообщение об успешном завершении на странице обработки, что устраняет необходимость использования COOKIE или SESSION.

0 голосов
/ 09 ноября 2011

На странице, где вы хотите показать скрытый div, вам также нужно проверить referer

Если вы заходите на эту страницу со страницы с формой, вы должны показать div, иначе не показать

Вы также можете сделать это, проверив REQUEST_METHOD для ссылки "root /? A = a & b = b", например

if($_SERVER['REQUEST_METHOD'] == 'GET'){
  // do what you wonna to do
  $showForm = false;
} else if($_SERVER['REQUEST_METHOD'] == 'POST'){
  // There is an action of submitting your form.
  // Do this, after that show info
  $showForm = true;
}

if($showForm){
  echo '<div id="hiddenDiv">Hello hidden div</div>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...