0

在发布 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

干杯!

4

5 回答 5

6

如果您使用的是 PHP,请在服务器上执行:

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

请注意,您应该在header()调用中使用完整的 URL,并且在这种情况下您可能希望exit()在调用之后header()使用。

于 2012-08-23T13:06:20.417 回答
2

您可以使用简单的 phpheader('yourlocation.php');将它们从表单中移开。

即使您的 header() 位于 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,他们可以随意刷新垃圾邮件,但所有处理都已经发生。它不会重新发送信息(或再次处理他们的付款或其他任何事情)。

于 2012-08-23T13:05:11.657 回答
2

是的,使用重定向标头:

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

这必须在发送任何输出之前调用。

请注意,标头调用之后的所有内容仍将执行!因此,您需要die()exit()之后才能防止意外结果。

于 2012-08-23T13:05:57.330 回答
1

您可以简单地指定提交后表单的 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';
});
于 2012-08-23T13:07:13.227 回答
0

是的,只需使用 ajax 发布数据,然后使用window.location = 'http://xxxx.com'将用户重定向到您选择的位置。这是假设您要重定向用户而不使用服务器端位置标头(如发布的其他标头)。

于 2012-08-23T13:05:19.643 回答