从单个表单接收POST并添加到单独的会话数组

时间:2010-10-29 21:50:52

标签: php

我有一个应用程序流程的几个阶段,包括不同页面上的多个表单。

我创建了一个处理数据的会话。

我的问题是,如果没有明确规定每个表单字段表单,我可以将表单发布逐个添加到会话数组的各个部分。

所以,当我最后我可以循环并打印?

2 个答案:

答案 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()方法比这个方法更优雅,所以只要忘记第一段代码。