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

Php 成功提交表单后,重定向到订单成功页面,php,forms,validation,Php,Forms,Validation,我有一个表单,它应该在点击提交按钮后重定向到订单成功页面。 我试图使用Header(),但出现了标题已发送错误。我无法将其放在php文件的顶部,因为如果提交的表单有错误,我必须重定向到旧订单页面 还有别的办法吗 还有一个疑问, 目前我正在使用以下命令清除所有会话 <?php session_start(); session_unset(); session_destroy(); session_write_close(); setcookie(session

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

还有别的办法吗

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

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


因此,如果我打算在上述给出n个代码后在同一页面中使用会话,我是否必须在表单中再次使用此

您是通过发送到浏览器的内容发送标题,换句话说,在您尝试发送标题()之前,某些内容已被回音

找出什么,退出;在您想要创建头()之前;试图找出问题所在

我通常不会提出这一建议,因为这是一种极为恶劣的做法,但要强迫它:

ob_clean(); // Cleans the output buffer
header("Location: redirect-url");
要清除会话,请执行以下操作:

$_SESSION = array();
session_destroy();

更新


是,您必须使用
session_start()以重新启动新会话,但请记住,您已销毁旧会话,因此数据将被清除-新会话=空会话

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

找出什么,退出;在您想要创建头()之前;试图找出问题所在

我通常不会提出这一建议,因为这是一种极为恶劣的做法,但要强迫它:

ob_clean(); // Cleans the output buffer
header("Location: redirect-url");
要清除会话,请执行以下操作:

$_SESSION = array();
session_destroy();

更新


是,您必须使用
session_start()以重新启动新会话,但请记住,您已销毁旧会话,因此数据已被清除-新会话=空会话

您可以做几件事

  • 通过输出
    parent.location.href='nextpage.php',使用javascript重定向用户
  • 您可以使用在输出后发送HTTP头

    当输出缓冲处于活动状态时,不会从脚本发送任何输出(头除外),而是将输出存储在内部缓冲区中
  • 您可以添加一个元刷新标题
  • 您可以向用户显示指向下一页的链接,并让他自己单击

  • 你可以做几件事

  • 通过输出
    parent.location.href='nextpage.php',使用javascript重定向用户
  • 您可以使用在输出后发送HTTP头

    当输出缓冲处于活动状态时,不会从脚本发送任何输出(头除外),而是将输出存储在内部缓冲区中
  • 您可以添加一个元刷新标题
  • 您可以向用户显示指向下一页的链接,并让他自己单击

  • 这是怎么回事?:)他问起了改道的问题。虽然我确实忘记了会议的事,但你已经处理好了;-)如果他不知道为什么要发送标题,那就有点混乱了,这可能是无意的,如果他发现这是有意的,那么是的,你的解决方案是好的,因此+投票。。。然而,这无助于找出发送头的原因?通常我也会这么想,但我无法将其放在php文件的顶部这句话让我非常确定,他知道在任何输出之前,它应该放在顶部。不管怎样,谢谢你的留言:)这怎么就不成问题了他问起了改道的问题。虽然我确实忘记了会议的事,但你已经处理好了;-)如果他不知道为什么要发送标题,那就有点混乱了,这可能是无意的,如果他发现这是有意的,那么是的,你的解决方案是好的,因此+投票。。。然而,这无助于找出发送头的原因?通常我也会这么想,但我无法将其放在php文件的顶部这句话让我非常确定,他知道在任何输出之前,它应该放在顶部。无论如何,感谢您的注释:)@oDx如果这些答案对您有帮助,请将其中一个标记为正确答案;)@oDx如果这些答案对您有帮助,请将其中一个标记为正确答案;)