Перенаправление после публикации HTML-формы

Нужно ли перенаправить пользователя после отправки HTML-формы?

У меня есть форма, которая выглядит так

<form action="/URL/" method="post"> <input type="radio" name="answer" value="W" />W<br /> <input type="radio" name="answer" value="X" />X<br /> <input type="radio" name="answer" value="Y" />Y<br /> <input type="radio" name="answer" value="Z" />Z<br /> <input type="submit" /> </form> 

В любом случае я могу перенаправить пользователя на новую страницу после нажатия кнопки отправки? Однако я нашел немного javascript, который, казалось, остановил сообщение от работы: S

Ура!

Если вы используете PHP, сделайте это на сервере:

 if( isset( $_POST['answer'])) { header( 'Location: http://www.example.com/newurl'); exit(); } 

Обратите внимание, что вы должны использовать полный URL-адрес в вызове header() и, вероятно, хотите exit() после вызова header() в этом случае.

Вы можете использовать простой header('yourlocation.php'); php header('yourlocation.php'); чтобы отодвинуть их от формы.

PHP, на который указывает действие вашей формы, будет продолжать выполняться, даже если ваш заголовок () находится в верхней части файла php.

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

Примером может служить следующее:

 <?php /* This will give an error. Note the output * above, which is before the header() call */ // Process Form Data, insert to database, whatever you want... then header('Location: http://www.example.com/'); ?> 

Затем пользователь заканчивается на wwww.example.com, и они могут спам обновлять столько, сколько захотят, но вся обработка уже состоялась. Он не будет повторно отправлять информацию (или обрабатывать их платеж снова или что-то еще).

Да, используйте заголовок перенаправления:

 header("Location: http://new.location.com/w00t"); 

Это нужно вызвать до отправки любого вывода.

Обратите внимание, что все после вызова заголовка все равно будет выполнено! Поэтому вам понадобится die() или exit() чтобы предотвратить непредвиденные результаты.

Вы можете просто указать URL-адрес, по которому будет отправляться форма.

 <form action="http://localhost/redirected.php" method="post"> 

Вы можете проверить с помощью PHP, будет ли форма отправлена, а затем перенаправлена:

 if (isset($_POST['answer'])) header('Location: redirect.php'); 

И вы можете добиться этого с помощью javascript / jquery.

 $('#submit_button').click(function () { // do everything with variables window.location = 'redirect.php'; }); 

Да, просто опубликуйте данные с помощью ajax, а затем используйте window.location = 'http://xxxx.com' чтобы перенаправить пользователя в выбранное вами местоположение. Это предполагает, что вы хотите перенаправить пользователя, не используя заголовки местоположения на стороне сервера (как и другие опубликованные).