【问题标题】:Redirect to a Order Success Page once the form has been submitted succesfully成功提交表单后重定向到订单成功页面
【发布时间】:2012-01-07 11:41:35
【问题描述】:

我有一个表单,一旦单击提交按钮,它应该被重定向到订单成功页面。 我尝试使用hearer() 但标题已经发送错误来了。我不可能把它放在 php 文件的顶部,因为如果提交的表单有错误,我必须重定向到旧的订单页面。

还有其他方法吗?

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

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

如果我打算在上面给出 n 代码之后在同一页面中使用会话,我是否必须在表单中再次使用这个 &lt;?php session_start(); ?&gt;

【问题讨论】:

    标签: php forms validation


    【解决方案1】:

    你可以做几件事,

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

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

    3. 您可以添加 元刷新 标头 &lt;meta http-equiv="refresh" content="0;url=nextPage.php"&gt;
    4. 您可以向用户显示下一页的链接,让他自己点击。

    【讨论】:

    • 怎么没有解决问题? :) 他询问了重定向。虽然我确实忘记了会议的事情,但你已经处理好了;-)
    • 好吧,如果他不知道为什么要发送标头,那会有点混乱,这可能是无意的,如果他发现这是有意的,那么是的,您的解决方案很好,因此 + 投票。 .. 但是,这无助于找出为什么要发送标头?
    • 通常我会这么想,但No way I could put this at the top of the php file这句话让我很确定他知道它应该在任何输出之前放在首位。无论如何,谢谢你的笔记:)
    【解决方案2】:

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

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

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

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

    清除会话:

    $_SESSION = array();
    session_destroy();
    

    更新

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

    【讨论】:

    • @oDx 如果这些答案对您有帮助,请将其中一个标记为正确答案;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多