petyann
Есть кнопка:
Есть php-код:
PHP:
При нажатии на кнопку внизу страницы выводится «Hello».
Если перейти на любую другую страницу сайта, а потом вернуться назад (кнопкой «Назад» в браузере), то выдаётся такое сообщение:
«Подтвердить повторную отправку формы
Для правильного отображения эта веб-страница требует данные, которые вы ввели ранее. Вы можете отправить данные повторно, но поступая так, вы повторяете любые действия, уже произведенные на странице. Нажмите «Перезагрузить», чтобы отправить данные повторно и отобразить страницу.»
То есть, чтобы оказаться опять на первоначальной странице, приходится её перезагружать. Как-то можно этого избежать, чтобы сразу назад переход был? Как это можно реализовать для данного примера?
Drunkenmunky
Дело в том, что код типа
Код (Text):
if (isset($_POST[‘button1’])) echo «Hello!»;используют на этапе отладки. Проверяя какие и в каком виде приходят данные из формы.
Далее данные обрабатываются, записываются, например в базу данных, а браузер перенаправляется уже на страницу вывода этих данных(или в другое место).
При перенаправлении никаких «подтверждений об отправке» не появляется. Потому что ничего и не передается.
petyann
Там вообще вместо echo «Hello!» будет код сортировки элементов. То есть ничего никуда передаваться не будет. Но вот при переходе на другую страницу и обратно требует перезагрузить окно. Вот это и хочу как-то побороть, чтобы без перезагрузки было.
Drunkenmunky
Тогда ознакомьтесь
https://www.php.net/manual/ru/function.header.php
В частности пример номер два.
Дмитрий_Ставрополь
Может сделать редирект?
Дмитрий_Ставрополь
В принципе про него и дали ссылку
petyann
Только получается, что редирект
Попробовал так:
PHP:Всё равно при возврате назад требует перезагрузить.
— Добавлено —Тоже не получается.
Попробовал так:PHP:Всё равно при возврате назад требует перезагрузить.
Дмитрий_Ставрополь
- header(«Location: ‘путь к файлу куда производить редирект’ «);
- if (isset($_POST[‘button3’])) {
- echo «Hello world»;
- }
roboformation
Конечно, требует. Вы же используете post-метод. Почините уже у себя GET и пользуйтесь им
petyann
Вот так сделал, но тоже требует перезагрузить:
PHP:Кстати, в header(«Location: /index.php»); можно писать абсолютно любой адрес, никакой переадресации всё равно не происходит.
Дмитрий_Ставрополь
- 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
Дмитрий_Ставрополь
Попробуй применить сессии