处理多页面表单
问题
希望使用一个显示多页面的表单,而且从一个页面切换到下一个页面时要保留数据。例如,可能想建立表单做一个调查,由于问题太多,所以无法把所有问题都放在一个页面中。
解决方案
使用会话跟踪来存储各个阶段的表单信息,另外使用一个变量跟踪要显示哪个阶段。示例9-21展示了4个文件,这些文件对应一个两页面表单,并显示收集到的结果。
建立一个多页面表单
// 启动一个新的或者继续现有的会话
session_start();
// 检查请求方法是否为GET,或者POST请求中是否没有设置'stage'参数
if(($_SERVER['REQUEST_METHOD'] == 'GET') || (!isset($_POST['stage']))){
// 如果是GET请求或者POST请求中没有'stage'参数,将阶段变量$stage设置为1
$stage = 1;
}else{
// 如果POST请求中设置了'stage'参数,则将其值转换为整数并赋给$stage变量
$stage = (int)$_POST['stage'];
}
// 确保$stage的值不小于1
$stage = max($stage, 1);
// 确保$stage的值不大于3
$stage = min($stage, 3);
// 如果当前阶段大于1,说明不是第一次访问(假设阶段1是首次访问)
if($stage > 1){
// 遍历所有的POST数据
foreach($_POST as $key => $value){
// 将POST数据保存到会话变量中,以便跨请求保持数据
$_SESSION[$key] = $value;
}
}
// 根据$stage的值动态包含对应的PHP文件
// 这里假设有三个阶段,分别对应stage-1.php, stage-2.php, 和 stage-3.php
include DIR . "/stage-$stage.php";
表单的第1阶段(stage-1.php):
表单的第2个页面(stage-2.php):
显示结果页面(stage-3.php):
Hello .
Your are years old.
Your favorite color is
and your favorite food is .
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战