2014-02-12 112 views
1

我有一个表单,表单提交后将用户重定向到“page1.php”。我想要做的是在提交表单后将用户重定向到“page2.php”,但我需要确保POST请求已发送。例如:PHP提交表单后重定向到新页面

<form action="page1.php" method="POST"> 
<input type="text" name="username" /> 
<input type="text" name="age" /> 
<input type="submit" value="" /> 
</form> 

当用户点击提交时,它将他重定向到page1.php。我想将他重定向到page2.php,但我需要确保将数据发送到服务器。我无法使用AJAX。有没有办法用cURL或类似的东西来做到这一点?任何例子?

谢谢!

+0

使用条件语句。 –

+0

使用标题()重定向 –

+0

可能的重复[使用javascript提交表单后更改页面](http://stackoverflow.com/questions/21703542/change-page-after-submitting-the-form-using-javascript ) – czachor

回答

0

在您的'page1.php'处理器中,将'header'重定向添加到'page2.php'。

header("Location: page2.php"); 
exit; 
+0

这将导致双重定向。提交页面 - > Page1 - > Page2。它必须用1个重定向来完成。 –

+0

不确定我是否理解,但是如果您只能有一个重定向,那么将表单发布到'form2.php',然后在'form2.php'中,您可以通过cURL将表单信息发送到'form1.php'并且然后等待响应返回,然后再继续处理'form2.php'上的代码。 – Quixrick

1

您可以检查POST请求的东西,如发送:

if($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // do something... 
} 

您可以在表单中创建一个隐藏的输入和发送有关提交表单,例如额外的信息行动。

里面你会做你的魔术和重定向用户提供:

header('Location: page2.php'); 
exit(); 
0

你可以做一个检查,如果查询完成

例如

<?php 
$query=mysqli_query(".......your query statement")or trigger_error(mysqli_error()); 
if($query){ 
      header("Location:page2.php"); 
      } 
else{ 
    die('error'); 
    } 
?> 
2

我想这个作品! 在page1.php中

<?php 
//do establish session 
//and check for the input fields obtained via $_POST 
if(isset($_POST['name_of_your_field']) && !empty($_POST['name_of_your_field'])){ 
    if(!mail($to,$subject,$message)){ 
     header('location:form.php?msg=error'); 
    }else{ 
     header('location:page2.php?msg=succes'); 
     } 
} 
?> 
0

在你的情况,你可以只是简单的检查,对发布的数据。像

$username = $_POST['username']; 
$age = $_POST['age']; 
if($username&&$age){ /* This is to check if the variables are not empty */ 
// redirect to page2 
} 

这是合乎逻辑的,如果这些不是空的,这意味着它们被张贴。即使他们是空的,只要你到达那里,这意味着它已经发布。没有必要检查是否发布,需要检查的是如果发布数据在那里。

我希望我说清楚。^_ ^但确保一点都不差。快乐的编码朋友。

相关问题