页面是否可以知道它已被重定向到使用header()?

时间:2014-08-09 16:18:56

标签: php redirect error-handling header

我正在创建一个表单。有一些服务器端验证在与包含表单的html文件分开的php文件中执行。如果验证失败,我想重定向回原始的html页面,并显示错误消息,说明出了什么问题。

现在,我能够成功验证并使用header()重定向回html页面,但我不确定如何创建和放置错误消息。如果它已被重定向到header(),是否可以使用php检查html页面的顶部?如果是这样,那将解决问题......

谢谢!

5 个答案:

答案 0 :(得分:1)

我认为有几种方法可以做到这一点。

1添加get参数,如:

<input type="hidden" name="formsent" value="1" />

然后将方法添加到您的<form>

当您从其他页面重定向时,获取将在链接中,以便您可以将其发回

header("Location: http://localhost/yourform.php/?{$_GET['formsent']}");

或者您可以在帖子中进行验证

if (isset($_POST) && !empty($_POST)) {
do stuff here.. if all is ok go to next page otherwise show errors
}

或者你可以在帖子之后使用$_SESSION['formsent'] = 1将一个var添加到会话中,然后你也可以检查它。

它上升2你

答案 1 :(得分:1)

您应该使用PHP会话设置变量。

表单页

session_start();
$_SESSION["formerror"] = "Error code here";
header("Location: http://www.example.com");

重定向到第

session_start();
$errorcode = $_SESSION["formerror"];
// Now convert the error code to something readable and print it out if needed.

IMO比GET变量更清晰。

答案 2 :(得分:0)

正如@Mark所写,您可以通过标题()中的url(我的意思是url + "?variable=$variable")在变量中发送消息,并通过{{捕获页面中的消息(现在是php页面) 1}}。该消息取决于您的验证

当然,您可以查看:https://stackoverflow.com/a/872522/2737474@Jrgns) 在页面之间传递一个变量的不同方法。


在我看来,你必须小心选择其中一个:

- 如果您为多个页面使用一个值(请记住它将存储在服务器上),最好使用$_GET

- 如果您只为两页使用一个值,最好使用SESSIONGET(取决于您的情况,网址/表单)。

- 如果您为多个页面使用一个值并希望在会话之间保留它(请记住它将存储在客户端上),最好使用POST

答案 3 :(得分:0)

您可以使用$_GET[]方法

执行此操作

如果验证成功,则重定向到像

这样的网址
form.php?status=1 // 1 for success 

如果验证失败,则重定向到

form.php?status=0 // 0 for fail

form.php 这是您的表单页面。

使用简单的if-else条件

if(isset($_GET['status']))
{
  if($_GET['status']==0)
    echo'something went wrong';
 //else nothing
 }

答案 4 :(得分:0)

正如许多聪明的用户所写,你有几种方法如何实现这一点(我不会写所有这些):

第一次使用会话检查Daniel的回答

第二次使用GET检查Sanket Shembekar的回答

3rd 使用rZaaaa的答案,但你可以为它附魔:D


<强>附

第1页

header('error: true');

第2页

print_r(headers_list()); //and find your error