Php 跨窗体处理程序和标头调用保存窗体POST数据

Php 跨窗体处理程序和标头调用保存窗体POST数据,php,html,post,Php,Html,Post,我已经在这个问题上纠结了一段时间,正在寻求帮助。提前谢谢。我在一个页面(guest/build.php)上有一个表单,其中有一组单选按钮: <form action="../php/build.php" method="POST"> <table class="table"> <caption>Your Computer Parts</caption> <tr><th>General Component<

我已经在这个问题上纠结了一段时间,正在寻求帮助。提前谢谢。我在一个页面(guest/build.php)上有一个表单,其中有一组单选按钮:

<form action="../php/build.php" method="POST">
<table class="table">
    <caption>Your Computer Parts</caption>
    <tr><th>General Component</th><th>Specific Component</th><th>Cost</th></tr>
    <?php include('buildFunction.php');?>   
</table>
<input id="buyMe" type="submit" value="BUY ME NOW!!!"> 
</form>
好的,那么注释的var_转储的结果正是我想要的:

array(10) { ["chasis"]=> string(1) "3" ["cpu"]=> string(1) "9" ["mobo"]=> string(2) "13" ["ram"]=> string(2) "18" ["gpu"]=> string(2) "22" ["psu"]=> string(2) "27" ["hdd"]=> string(2) "31" ["monitor"]=> string(2) "38" ["keyboard"]=> string(2) "42" ["mouse"]=> string(2) "47" } 
 }
然而,只要我调用header函数,我就会释放POST数组中的数据。我试着将它保存到一个全局变量中,但它总是注册为NULL,而且似乎并不合适

我的目标是在重定向之后,每个项目的ID都保留在POST数组中,然后我可以使用它在下一页(user/purchase.php)上填写价格表


我走错方向了吗?如果是这样,正确的方法是什么?在这个阶段,我试图坚持使用PHP,而不是在这里使用javascript。

如果您不想修改代码流,我可以想出两个解决方案:

  • 在会话中存储所有选择的值

  • 像build.php?chasis=bla&cpu=blablabla一样附加build.php,即,将以前的选择存储在$_GET中。您可以决定在uri太长的情况下如何执行,但您已经明白了


  • 您可以使用$\u SESSION变量保存数据,直到会话结束(可能发生在客户端关闭浏览器时)

    如果希望数据持久化,则应使用数据库


    还有一个选择,本地存储(您可以存储大约5MB),但这是HTML5标准,所以较旧的浏览器将不支持它。为此,您不必提交任何表单,但您必须使用javascript在页面之间移动

    将session\u start()从函数中取出,并将其放在使用$\u session的每个页面的开头。

    您将丢失post数据,因为您正在导航到不同的页面。你不能将它们存储在数据库中吗?嗯,我需要在下一页使用ID从我的数据库中提取信息。这似乎是对数据库的过度使用,但如果这是一种正确的方法,那么我想我可以做到。我不得不把它放在这里来解决我遇到的另一个问题。我已经在每个页面的顶部都有session_start(),但由于某些原因,如果没有它,它也无法正确存储消息。您是否尝试在函数中使用“global$\u session”?谢谢您的建议。我想这能满足我的需要。
    function redirect($url, $message){
    session_start();
    $_SESSION["message"] = $message;
        //var_dump($_POST);
        //exit;
    header("Location: $url");
    die;
    
    array(10) { ["chasis"]=> string(1) "3" ["cpu"]=> string(1) "9" ["mobo"]=> string(2) "13" ["ram"]=> string(2) "18" ["gpu"]=> string(2) "22" ["psu"]=> string(2) "27" ["hdd"]=> string(2) "31" ["monitor"]=> string(2) "38" ["keyboard"]=> string(2) "42" ["mouse"]=> string(2) "47" } 
     }