处理多页面表单

问题
希望使用一个显示多页面的表单,而且从一个页面切换到下一个页面时要保留数据。例如,可能想建立表单做一个调查,由于问题太多,所以无法把所有问题都放在一个页面中。
解决方案
使用会话跟踪来存储各个阶段的表单信息,另外使用一个变量跟踪要显示哪个阶段。示例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):

Name:
Age:

表单的第2个页面(stage-2.php):

Favorite Color:
Favorite Food:

显示结果页面(stage-3.php):
Hello .

Your are years old.

Your favorite color is
and your favorite food is .

posted @   kksllss  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示