Возврат на страницу назад

petyann

Есть кнопка:

HTML:
  1. <form method=«POST»>
  2.   <input type=«submit» name=«button1» value=«Нажмите» />
  3. </form>

Есть php-код:

PHP:
  1. if (isset($_POST[‘button1’])) echo «Hello!»;

При нажатии на кнопку внизу страницы выводится «Hello».
Если перейти на любую другую страницу сайта, а потом вернуться назад (кнопкой «Назад» в браузере), то выдаётся такое сообщение:
«Подтвердить повторную отправку формы
Для правильного отображения эта веб-страница требует данные, которые вы ввели ранее. Вы можете отправить данные повторно, но поступая так, вы повторяете любые действия, уже произведенные на странице. Нажмите «Перезагрузить», чтобы отправить данные повторно и отобразить страницу.»

То есть, чтобы оказаться опять на первоначальной странице, приходится её перезагружать. Как-то можно этого избежать, чтобы сразу назад переход был? Как это можно реализовать для данного примера?

 

Drunkenmunky

Дело в том, что код типа

Код (Text):
  1. if (isset($_POST[‘button1’])) echo «Hello!»;

используют на этапе отладки. Проверяя какие и в каком виде приходят данные из формы.
Далее данные обрабатываются, записываются, например в базу данных, а браузер перенаправляется уже на страницу вывода этих данных(или в другое место).
При перенаправлении никаких «подтверждений об отправке» не появляется. Потому что ничего и не передается.

 

petyann

Там вообще вместо echo «Hello!» будет код сортировки элементов. То есть ничего никуда передаваться не будет. Но вот при переходе на другую страницу и обратно требует перезагрузить окно. Вот это и хочу как-то побороть, чтобы без перезагрузки было.

 

Drunkenmunky

Тогда ознакомьтесь
https://www.php.net/manual/ru/function.header.php
В частности пример номер два.

 

Дмитрий_Ставрополь

Может сделать редирект?

 

Дмитрий_Ставрополь

В принципе про него и дали ссылку

 

petyann

Только получается, что редирект

Попробовал так:

PHP:
  1. if (isset($_POST[‘button3’])) {
  2.     header(«Location: /newfolder»);
  3.     header(«Cache-Control: no-cache, must-revalidate»);
  4.     echo «Hello world»;
  5. }

Всё равно при возврате назад требует перезагрузить.
— Добавлено —

Тоже не получается.
Попробовал так:

PHP:
  1. if (isset($_POST[‘button3’])) {
  2.     header(«Location: /newfolder»);
  3.     header(«Cache-Control: no-cache, must-revalidate»);
  4.     echo «Hello world»;
  5. }

Всё равно при возврате назад требует перезагрузить.

 

Дмитрий_Ставрополь

  1. header(«Location: ‘путь к файлу куда производить редирект’ «);
  2. if (isset($_POST[‘button3’])) {
  3. echo «Hello world»;
  4. }
 

roboformation

Конечно, требует. Вы же используете post-метод. Почините уже у себя GET и пользуйтесь им

 

petyann

Вот так сделал, но тоже требует перезагрузить:

PHP:
  1. header(«Cache-Control: no-cache, must-revalidate»);
  2. header(«Location: /index.php»);
  3. if (isset($_POST[‘button3’])) {
  4. echo «Hello world»;
  5. }

Кстати, в header(«Location: /index.php»); можно писать абсолютно любой адрес, никакой переадресации всё равно не происходит.

 

Дмитрий_Ставрополь

  1. header(«Cache-Control: no-cache, must-revalidate»); уберите, а после всего поставьте exit;

— Добавлено —
Я сделал у меня получилось с кодировкой utf-8-BOM
БЕЗ header
— Добавлено —
Я сделал у меня получилось с кодировкой utf-8-BOM
<?php
if (isset($_POST[«button1»])) echo «Hello Word!»;
?>
<html>
<head></head>
<body>
<form action=»index.php» method=»post» />
<input type=»submit» name=»button1″ value=»Нажатие»>
</form>
</body>
</html>

 

petyann

Добавил в форму action=»index.php». Тогда происходит просто переадресация на главную страницу и «Hello Word!» не выводится. Но вот загвоздка в том, что у меня после выполнения кода ни на какую страницу не должно переходить, а всё должно оставаться на той же странице, где и было. То есть просто появляется надпись «Hello Word!» и всё.
Попробовал писать action=»», action=»?qwerty», action=»?qwerty=1″, тогда «Hello Word!» выводится, но вот при переходе на другую страницу и обратно опять требует перезагрузить страницу.

 

miketomlin

Для сортировки форма не нужна. Просто сделайте соотв. ссылки и закройте страницы с сортировкой не по умолчанию от поисковика. Например:
/ – сортировка по умолчанию (name-asc);
/sort/name-desc
/sort/date
/sort/date-desc

Закрывается директивой Disallow: /sort/
— Добавлено —
Похожий пример на однокомпонентных путях (можно закрыть по префиксу sort-by-): https://gency.ru/comment/84

 

Дмитрий_Ставрополь

Попробуй применить сессии

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *