有没有办法获取$ _POST数据数组并将其合并到$ _SESSION数组中。我希望它保持当前数据的完整性,只插入新数据或更新已更改的部分。我已经尝试过array_merge,但它并没有按照我的意愿去做。
由于
答案 0 :(得分:1)
您是否可以尝试创建$ _SESSION ['postVars']变量,然后在其中存储$ _POST信息。我不会尝试将$ _SESSION与$ _POST合并,这将在以后的轨道上对您的应用程序产生安全隐患。话虽如此,我还要小心保存$ _POST全局上的任何内容。无论如何,我希望我的建议有所帮助。
答案 1 :(得分:1)
尝试将$_POST
合并到$_SESSION
不是一个好主意。相反,做一些像:
$_SESSION['lastPost']=$_POST;
或者,如果您想要更新更改,请将$_POST
与$_SESSION['lastPost']
进行比较,并为受影响的密钥分配任何差异,例如
$_SESSION['lastPost']['thisKeysValueChanged'] = $_POST['thisKeysValueChanged'];
答案 2 :(得分:1)
foreach ($_POST as $key => $val) {
if (!isset($_SESSION[$key]) || ($val !== $_SESSION[$key])) {
$_SESSION[$key] = $val;
}
}
简而言之,如果当前正在考虑的POST键值在SESSION arra中没有相应的条目,或者这两个值不同,则将POST数据复制到SESSION。
但是,请注意,这将允许恶意用户覆盖整个会话数组。如果他们知道你保留了$_SESSION['is_admin']
标志,他们就可以用适当的值轻易覆盖它并给自己超级用户权限。
直接+盲目地将用户提供的数据传输到会话变量中绝对不是一个好主意。
答案 3 :(得分:0)
array_merge确实有效,但它不会修改数组,返回合并后的数组。你想要做的是:
$_SESSION = array_merge($_SESSION, $_POST);
(安全警告如上:)