- Как вернуться на предыдущую страницу после отправки формы с php?
- 5 ответов
- Return to Previous Page in PHP
- Use the HTTP_REFERER Request Header to Return to the Previous Page in PHP
- Related Article — PHP Redirect
- Вернуться на ту страницу, с которой я пришёл
- Вернуться на предыдущую страницу с заголовком («Местоположение:»); в PHP
Как вернуться на предыдущую страницу после отправки формы с php?
У меня есть форма в html, чей атрибут action вызывает файл contact.php. Проблема в том, что после того, как я отправлю форму, файл, который отображается, является пустой страницей с адресом contact.php, и я хочу снова увидеть форму главной страницы.
HTML: PHP: [email protected]"; $message = ' name: '.$name.' email: '.$email.' message: '.$message.' '; $headers = 'From: [email protected]'; if ( mail($to, $subject, $message, $headers) ) echo""; else echo""; ?>
5 ответов
Используйте либо $_SERVER[«HTTP_REFERER»] , либо используйте скрытое поле в форме с URL-адресом текущей страницы:
"); >else if(isset($_SERVER["HTTP_REFERER"]))< header("Location: "); >else < /* some fallback, maybe redirect to index.php */ >
И тогда даже тогда вы должны иметь резервные копии в случае, если по какой-то причине клиент не соблюдает переадресацию HTTP, например, некоторую переадресацию javascript, мета-перенаправление и ссылку на пункт назначения.
Это лучший и более надежный способ сделать это при отправке данных в базу данных или при прикреплении переменных к URL. Вы не хотите, чтобы браузер просто возвращался на страницу (которая может в конечном итоге отправить форму несколько раз или отображать ошибки), вы хотите, чтобы он физически переходил по URL, эффективно перезагружая страницу с новыми данными, с возможность прикрепить дополнительные переменные к URL (например, сообщение об успехе / ошибке).
Добавьте JS-перенаправление после вашего оповещения, затем
echo " ";
Я попытался с вашим решением, и страница возвращает это: alert (‘сообщение успешно отправлено’); window.history.go (-1); «; еще эхо» «;?>
Это работает. Я поставил сценарий вне php-кода . Но предупреждение появляется на пустой странице и только после загрузки формы. Я хочу, чтобы при загрузке формы появлялось предупреждение (если форма отправлена правильно)
Я плохо отношусь к публикации ответа, поскольку он просто объединяет два других SO-ответа.
Charlie74 ответ на этой странице
// add the message you want to show to the user header("Location: yourfilenamehere.php?alertmsg=message+send+succesfully"); exit();
Проверка второй части для имени alertmsg в строке запроса
function getParameterByName(name) < name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); >
на странице, на которую вы перенаправляете вызов функции getParameterByName :
var msg = getParameterByName('alertmsg'); if (alertmsg.length > 0)
Return to Previous Page in PHP
This article will introduce some methods to return to the previous page in PHP.
Use the HTTP_REFERER Request Header to Return to the Previous Page in PHP
The HTTP_REFERER request header returns the URL of the page from where the current page was requested in PHP. The header enables the server to acknowledge the location from where the users are visiting the current page. The header is used as the index of the $_SERVER array. We can use the header() function with the location header to redirect the current page to the previous page. We should set the location to $SERVER[‘HTTP_REFERER’] to return to the previous page.
Let’s see how the HTTP_REFERER header works. For instance, create a button in HTML. Set the action attribute to home.php and the method attribute to post . Save the file as index.php . In the home.php file, check whether the form is submitted with the isset() function. Then, use the echo function to display the $_SERVER[HTTP_REFERER] header.
form action ="home.php" method = "POST"> button type="submit" name="button"> Submitbutton> form>
if(isset($_POST['button'])) echo $_SERVER[HTTP_REFERER]; >
Here, we created the form in the index.php file. Then, the form is submitted to the home.php file. It means that the home.php page was requested from the index.php page. Therefore, the index.php page is the referrer. The output section above shows that the HTTP_REFERER returns the URL http://localhost/index.php , the referrer.
Our goal is to redirect the current page home.php to the previous page index.php .
For example, in the home.php file, create a variable $message to store the message to be displayed after the redirection occurs. Use the urlencode() to write the message in its parameter. Next, write the header() function to set the location of the redirection. Concatenate $_SERVER[HTTP_REFERER] and «?message ezoic-autoinsert-video ezoic-mid_content»>
When we click the button on the index.php page, the form gets submitted to home.php and will redirect back to the index.php page, the previous page.
In this way, we can use the header() function and the HTTP_REFERER header to return the current page to the previous page in PHP.
//index.php form action ="home.php" method = "POST"> button type="submit" name="button"> Submitbutton> form> php if(isset($_GET['message'])) echo $_GET['message']; > ?>
//home.php if(isset($_POST['button'])) $message = urlencode("After clicking the button, the form will submit to home.php. When, the page home.php loads, the previous page index.php is redirected. "); header("Location:".$_SERVER[HTTP_REFERER]."?message=".$message); die; >
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
Related Article — PHP Redirect
Вернуться на ту страницу, с которой я пришёл
Получить страницу, с которой пришел пользователь
Даже не знаю куда еще смотреть: необходимо узнать с какой страницы перешел пользователь. Вроде все.
Переход на web страницу, с которой пришел запрос
перехожу из одной страницы на другую с помощью метода redirect Response.Redirect("string.aspx").
Как вернуться на блок div c id, с которого пришел
Добрый день всем. Помогите пожалуйста. Есть 10 блоков у которых есть ссылка на один и тот же <div.
Как сделать redirect на url с которой пришел?
Пишу приложение на Zend Как и откуда можно вытащить предыдущую url? К примеру на сайте есть.
все действия происходят в index.php
допустим, я перешёл в меню «редактирования текста»
index.php?id=5 там я изменил текст, перешёл на index.php?id=5&st=1, после чего он должен у меня моментом вернуться index.php?id=5
через хейдер так нельзя, у меня все через пост =(
а сессии у меня и так забиты по уши
Добавлено через 1 минуту
можно как-то ведь, я минимум 2-а способа видел, не помню где, найти не магу
через SERVER[»] или в хейдере какая-то функция
header("Location: index.php?id=".$_GET['id']);
a href="#" OnClick="history.back();">Назад/a>
Добавлено через 2 минуты
хотя лучше чем никак, с этим буду рыть землю
$redicet = $_SERVER['HTTP_REFERER']; @header ("Location: $redicet");
a href="#" onclick="history.go(-1); return false;">Назад/a>
«-1» это на сколько страниц назад возвращаться.
Добавлено через 13 минут
Сообщение от Unick-legenda
Сообщение от boong
Сообщение от boong
Сообщение от boong
$redicet = $_SERVER['HTTP_REFERER']; @header ("Location: $redicet");
form action="http://full_url_with_get_vars/" method="post" name="theform"> input type="hidden" name="post1" value=" " /> input type="submit" value="Continue" /> /form> script type="text/javascript">document.theform.submit();/script>
3) Как ни странно — сессии (имхо, самое правильное решение)
4) Делаешь внутреннюю переброску на скрипт, который формирует полноценный постовый редирект:
$req="submit=true&cmd=test"; header("method: POST\r\n"); header("Host: localhost\r\n"); header("Content-Type: application/x-www-form-urlencoded\r\n"); header("Content-Length: ".strlen($req)."\r\n"); header($req."\r\n\r\n"); header("Connection: close\r\n\r\n"); header("Location: http://127.0.0.1/php_tuts/redirect/end.html\r\n");
Вернуться на предыдущую страницу с заголовком («Местоположение:»); в PHP
@Pekka, черт возьми, просто зайди в свой журнал доступа для рефереров, который не начинается с «http: //». И где бы он взял всех этих пользователей?
Использование реферера, после предварительного тестирования, установленного и действительного, в определенном контексте страница-страница может быть вполне приемлемой практикой — подавляющее большинство браузеров отправляет правильный HTTP_REFERER.
@Col Я использую это в производстве, когда мне нужно было что-то сделать для демонстрации. Как вы можете видеть из моего ответа, я предлагаю три других решения, к которым я бы обратился вместо перенаправления на основе HTTP_REFERER.
@Col Я собрал три ежедневных журнала: вчера и за два дня в прошлом году. Я не вижу ничего, кроме пустых, — или http:// URL
@Pekka Я устал от этого. Иди попробуй по-настоящему, с регистрацией всех неподобающих рефереров. Тогда возвращайся и мы продолжим
@Col Кол, ты шутишь со мной? Сколько браузеров вы знаете, которые подавляют реферер? ОП спрашивает о странице на том же сайте.
@Col Все, что я могу найти по этому вопросу, это и это . Если вы не предоставите доказательство того, что значительное количество браузеров по умолчанию не отправляют информацию о реферерах при переходе с одной страницы в одном домене на другую, я называю ерунду.
@Pekka: Я понимаю, что это старые новости, но Chrome возвращает мне favicon.ico для $_SERVER[‘HTTP_REFERER’] для меня очень часто, поэтому я должен согласиться, что метод бесполезен в реальном мире.
@Madmartigan звучит как неправильно настроенное перенаправление, хотя. Насколько мне известно, HTTP_REFERER не сломан.
@Pekka: фавиконы — странный случай, хотя они загружаются и кэшируются (я до сих пор не понимаю всех деталей). На самом деле, просто поместив его в свой корень без ссылки на него в своем HTML, вы загрузите его на вкладку браузера. И, как я сказал для этого случая, это делал только Google Chrome. HTTP_REFERER не «сломан», его просто не следует использовать для этого. Вы не можете предположить, что это последняя «страница», которую посетил пользователь, это может быть любой ресурс. Я предполагаю, что Chrome выбирал иконку больше, чем нужно или что-то в этом роде. Не уверен, что вы подразумеваете под «неправильно настроенным перенаправлением»
@Madmartigan звучит как очень странное поведение, единственная подсказка, которую я вижу в сети, это некоторые проблемы с перенаправлением. В любом случае, я согласен, что использование реферера — это не тот путь, если вам нужна 100% безопасность.