我有一个应用程序流程的几个阶段,包括不同页面上的多个表单。
我创建了一个处理数据的会话。
我的问题是,如果没有明确规定每个表单字段表单,我可以将表单发布逐个添加到会话数组的各个部分。
所以,当我最后我可以循环并打印?
答案 0 :(得分:0)
我有点不清楚,但我认为你说你想要从每个页面中获得所有表单变量的单个数组。这样的事情可以解决问题:
if( !isset($_SESSION['form_data']) ) {
$_SESSION['form_data'] = array();
}
$_SESSION['form_data'] = array_merge($_SESSION['form_data'], $_POST );
您可以将其作为代码来处理每个页面上的提交,然后当然是您可以遍历的最后一页$_SESSION['form_data']
请注意,任何具有相同名称的表单字段在每次使用时都会被覆盖。因此,如果您在第1页上有name
而在第2页上有name
,则第2页的name
值最终将在数组中
为了安全起见,您应该在将输入数据放入会话之前检查输入数据。
答案 1 :(得分:0)
当然,你可以这样做:
foreach($_POST as $key => $value)
$_SESSION['form'][$key] = $value;
这会将所有POST数据保存到$_SESSION['form']
数组中。请注意,它会保存所有数据,恶意用户只需为此添加值即可。
在最后一页上,您可以回显这样的字段(不要忘记转义值,这是htmlspecialchars()
的用途)。
foreach($_SESSION['form'] as $key => $value)
echo htmlspecialchars($key) . ": " . htmlspecialchars($value) . "<br />\n";
编辑:array_merge()
方法比这个方法更优雅,所以只要忘记第一段代码。