if(isset($_POST))
{
if(verify_post_data() == 'success')
{
if(do_something_with_verified_post_data() == 'success')
{
//do something else
header('location: success.php');
}
}
header('location: failure.php');
}
我想处理用户在多个步骤中发布的数据(首先验证一切是否正确,然后对数据进行处理)。
如果验证帖子数据并对其进行操作成功,我想将用户重定向到success.php
如果验证失败,或者对数据做某事失败,我想重定向到失败。
这是正在发生的事情:
当我通过评论删除 header(...) 函数时,我说
//header('location: success.php');
echo 'success!';
和
//header('location: failure.php');
echo 'failure!';
我的脚本将打印“成功!失败!” 如果我的数据是正确的并且在处理数据时没有发生错误。完全有道理...因为成功的回声并没有打断脚本,所以仍然会显示失败。
因此,当我取消注释成功标头(失败标头保持注释)时,它确实将我发送到了 success.php
如果我随后也取消注释失败标头,它现在 - 即使成功 - 也会将我发送到 failure.php。
这怎么可能?
我希望标头函数会中断脚本并忽略它之后的任何代码。我的假设是错误的吗?我是否必须以某种方式手动退出脚本?
php不是逐行处理代码吗?或者它是最后做大括号中的标题,然后是其他标题,还是什么?
或者这不应该发生,我必须在其他地方出错?