我一直坚持这个问题一段时间并寻求一些帮助。提前致谢。我在页面上有一个表单(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>
这会将单选按钮中的数据发送到我的表单处理程序(php / build.php),以确保所有内容都已被选中:
<?php
include('manageUser.php');
$mainCheck = isset($_POST["chasis"]) && isset($_POST["cpu"]) && isset($_POST["mobo"]) && isset($_POST["ram"]) && isset($_POST["gpu"]) && isset($_POST["psu"]) && isset($_POST["hdd"]) && isset($_POST["monitor"]) && isset($_POST["keyboard"]) && isset($_POST["mouse"]);
if(!$mainCheck){
redirect("../guest/build.php","Please select 1 of each
component");
} else {
redirect("../user/purchase.php","Items Successfully Added");
}
?>
我的重定向功能(php / manageUser.php):
function redirect($url, $message){
session_start();
$_SESSION["message"] = $message;
//var_dump($_POST);
//exit;
header("Location: $url");
die;
好的,所以评论的var_dump的结果正是我想要的结果:
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" }
}
但是,只要我调用头函数,我就会松开POST数组中的数据。我试着将它保存到一个全局变量中,但它总是注册为NULL,无论如何似乎都不合适。
我的目标是在重定向后每个项目的ID都保留在POST数组中,然后我可以使用它来填写下一页的价格表(user / purchase.php)。
我是以错误的方式来做这件事的吗?如果是这样,那么正确的方法是什么?我试图在这个阶段坚持使用PHP,而不是在这里使用javascript。
答案 0 :(得分:0)
如果您不想修改代码流,我可以提出两种解决方案:
将所有选择的值存储在会话
将build.php添加为build.php?chasis = bla&amp; cpu = blabla,即将以前的选择存储在$ _GET中。如果uri太长,你可以决定你想怎么做,但你明白了。
答案 1 :(得分:0)
您可以使用$ _SESSION变量来保存数据,直到会话结束(可能在客户端关闭浏览器时发生)。
如果您希望数据持久化,则应使用数据库。
还有一个选项,本地存储(您可以存储大约5 MB),但这是HTML5标准,因此旧版浏览器不支持它。为此,您不必提交任何表格,但您必须使用javascript从一个页面到另一个页面。
答案 2 :(得分:0)
将session_start()从函数中取出,并将其放在每个使用$ _SESSION的页面的开头。