使用PHP重定向表单提交的最佳方法

时间:2014-02-06 18:39:41

标签: php html forms

我知道之前已经提出并回答过,但我想知道以下哪一项是在表单提交上实施重定向的最佳方式。

我在网页的标题部分中有PHP提交代码。这很好,但是当提交表单时,页面返回到同一页面。如果我放一个

header("Location: page2.php"); 

在提交代码下面,页面立即重定向到此页面(正如预期的那样 - 代码在页面加载后立即运行,因此它甚至不会创建表单,它将继续运行)。

现在,我

1 /将数据提交的代码放在PHP函数中(与重定向代码一起),然后在提交表单时调用此函数。这样,函数在输入数据之后才会运行,并且不必重新加载同一页面,只是立即重定向到另一页面。

2 /而不是上面的函数,在标题中使用if语句来测试其中一个数据。这样,在填写表单并按下提交按钮之前,将忽略提交代码。据我所知,缺点是必须调用相同的页面才能返回运行标题中的代码,然后可以提交数据并运行重定向代码。

3 /完全不同的东西!


修改

这是form.php:

标题中的代码
if (isset($_POST['email'])){
    $user = $_POST['email'];
    $_SESSION['email'] = $user;

    $title = $_POST['title'];
    $first_name = $_POST['first_name'];
    $surname = $_POST['surname'];
    $phone_number = $_POST['phone'];
    $email_address = $_POST['email'];
    $house = $_POST['add1'];
    $street = $_POST['add2'];
    $town = $_POST['add3'];
    $city = $_POST['add4'];
    $postcode = $_POST['add5'];

    $query = "INSERT INTO `first_page_data`(`title`, `first_name`, `surname`, `phone_number`, `email_address`, `house`, `street`, `town`, `city`, `postcode`) VALUES ('$title','$first_name','$surname','$phone_number','$email_address','$house','$street','$town','$city','$postcode')";
    $result = mysql_query($query, $first_data);
    header("Location: newproperty2.php");
}
?>

这可以在重定向到的页面上运行,还是必须在带有表单的页面上运行?

1 个答案:

答案 0 :(得分:3)

您可以使用action属性执行此操作,请查看以下代码...

    <form action="newproperty2.php" method="post">
    Name: <input type="text" name="first_name"><br/>
    SURNAME: <input type="text" name="surname"><br/>
    Phone:  <input type="text" name="phone"><br/>
    E-mail: <input type="text" name="email"><br/>
    title: <input type="text" name="title"><br/>
    <input type="submit">
    </form>

此处页面会在按下提交按钮后定向到welcome.php,此外,您还可以使用$ _POST ['name']和$ _POST ['email']访问nameemail ]。 然后将上面的PHP代码放在newproperty2.php(另一个文件)中。你不需要包含header()。在那段代码中还添加了我在这里没写过的其他变量。