Php 跨窗体处理程序和标头调用保存窗体POST数据
我已经在这个问题上纠结了一段时间,正在寻求帮助。提前谢谢。我在一个页面(guest/build.php)上有一个表单,其中有一组单选按钮: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<
<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。如果您不想修改代码流,我可以想出两个解决方案:
您可以使用$\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" }
}