PHP中的多页面表单
多页表单就像听起来一样,是一个跨多个页面的表单。这些在可用性方面很有用,因为它可以将原本令人生畏的大型表格分解成较小的块。如果要处理某些结果以确定用户在以后的步骤中看到的形式,它也很有用。
有两种方法可以使用PHP进行此操作。
第一个(也是最简单的)只是循环浏览先前表单上提交的项目,并将它们打印为隐藏字段。我们的第一页源代码将如下所示:
提交表单后,我们进入form2.php,它向用户询问一个不同的问题并打印出隐藏的字段。因为我们在第一个表单中使用了get请求,所以我们需要使用$_GET数组。
可以在表单的不同页面上使用相同的代码。此方法很好,并且效果很好,但是它不能解决用户返回表单并重新提交上一个项目的问题。$_GET数组将仅包含有关先前表格的信息。
为了使它更加用户友好和健壮,我们需要在用户浏览表单时使用一个会话来存储我们的表单值。使用会话意味着用户可以在表单之间来回循环,而不会对表单数据造成不良影响。以下代码将采用先前形式的输入,并将其另存为PHP会话。
session_start(); foreach ( $_GET as $key=>$value ) { if ( $key!="submit" ) { $value = htmlentities(stripslashes(strip_tags($value))); $_SESSION[$key] = $value; } }
这必须包含在我们多页表单的每一页中。如果不是,则将仅不保存该步骤的数据。您的用户现在可以在表单中来回移动,并随时保存信息。您需要为此提供一个后退按钮,因为使用浏览器的后退和前进按钮也不会保存数据。
最后,在测试此代码时,我发现在可用性方面,使用GET而不是POST是有益的。这主要是因为如果您使用POST请求,并且用户在浏览器上单击后退,则系统将询问他们是否要重新提交该表单的信息。
其他人对如何执行此操作有任何想法吗?如果是这样,请发表评论并提出建议。