表单成功提交后,重定向到订单成功页面

时间:2012-01-07 11:41:35

标签: php forms validation

我有一个表单,一旦点击提交按钮,该表单应该被重定向到订购成功页面。 我试图使用hearder()但已发送的标题错误来了。我无法将其放在php文件的顶部,因为如果提交的表单有错误,我必须重定向到旧的订单页面。

还有其他办法吗?

还有一个疑问, 目前我正在使用以下内容清除所有会话!

<?php session_start();
    session_unset();
    session_destroy();
    session_write_close();
    setcookie(session_name(),'',0,'/');
    session_regenerate_id(true); ?>

如果我打算在上面给出n代码之后在同一页面中使用会话,那么我是否必须在表单中再次使用此<?php session_start(); ?>

2 个答案:

答案 0 :(得分:2)

你可以做几件事,

  1. 使用javascript通过输出<script type="text/javascript">parent.location.href = 'nextpage.php';</script>
  2. 重定向用户
  3. 您可以在输出后使用Output Buffering发送HTTP标头。

      

    当输出缓冲处于活动状态时,不会从脚本(标题除外)发送输出,而是将输出存储在内部缓冲区中。

  4.   
  5. 您可以添加元刷新标题<meta http-equiv="refresh" content="0;url=nextPage.php">
  6.   
  7. 您可以向用户显示指向下一页的链接,并让他自己点击它。
  8.   

答案 1 :(得分:1)

您正在通过发送到浏览器的内容发送标题,换句话说,在您尝试使用header()之前已经回显了某些内容;

找出什么,退出;在你想要header()之前;试着找出问题

我通常不会建议这样做,因为这将是非常糟糕的做法,但强迫它:

ob_clean(); // Cleans the output buffer
header("Location: redirect-url");

清除会话:

$_SESSION = array();
session_destroy();

<强>更新

是的,您必须再次使用session_start();重新启动新会话,但请记住您销毁旧会话以清除数据 - 新会话=空会话