2012-01-07 94 views
0

我有一个表单,该表单应该被重定向到点击提交按钮后才能成功页面。 我试着使用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

你可以做几件事情,

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

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

  3. 你可以添加一个元刷新<meta http-equiv="refresh" content="0;url=nextPage.php">
  4. 您可以向用户显示一个链接到下一个页面,让他点击它自己。

+0

这不是真正得到这个问题,但确定+票;) – Prof83 2012-01-07 11:49:06

+0

怎么这么没有得到这个问题? :)他询问重定向。虽然我确实忘了会议的事情,但你已经照顾了;​​-) – 2012-01-07 11:50:25

+0

如果他不知道为什么标题被发送出去,它有点混乱,这可能是无意的,如果他发现它是故意的,那么是的,你的解决方案是好的,因此+投票...然而,这不是帮助找出为什么标题发送? – Prof83 2012-01-07 11:53:35

1

您正在发送内容被发送到浏览器的标头,换句话说,在尝试header()之前已经回显了一些内容。

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

我绝不会通常表明这一点,因为这将是非常糟糕的做法,而是要迫使它:

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

要清除会话:

$_SESSION = array(); 
session_destroy(); 

更新

是的,你必须我们Ësession_start();再次重新发起新的会话,但要记住你摧毁旧的,因此数据将被清除 - 一个新的会话=空会话

+0

@oDx如果这些问题的答案帮助你,请注明其中一个为正确答案;) – Prof83 2012-01-07 11:59:48