我正在写一份调查,应该一次显示每个问题。我对表单的工作原理有点生疏,所以这可能是问题,但这是我的问题。
该程序从文件中读取问题并将其显示在页面上。本质上,我想使用一个表单来显示一个问题,通过下一个或上一个按钮提交答案,然后从那里转到下一个问题。
值得注意的是,我必须使用 CGI(虽然我认为这影响不大)。
据我了解,我必须使用某种隐藏字段来跟踪当前的问题编号,这准确吗?
在 CPAN 中有一个名为CGI::Session的模块。正如您可能猜到的那样,该模块处理会话管理。这样做,它有助于维护 CGI 应用程序中的状态。除非您的需求将您带到 CGI::Session 未明确涵盖的方向,否则建议您让它为您完成会话/状态管理的繁重工作。
虽然可以使用隐藏字段将信息从一个状态传递到下一个状态,但有一些方法比其他方法更可靠。隐藏字段只是几种技术中的一种。GET 请求可以将会话信息从一个请求传递到下一个请求。隐藏字段也是如此。饼干也是。但是,与其传递当前和下一个问题编号,不如传递一个标识特定会话的哈希值。这对某人来说更难以您的脚本不打算处理的方式进行操作。本段的重点是 CGI::Session 让您不必担心会话管理的实现。这让您可以专注于完成某些事情(Web 应用程序的主要目的)。
有几种方法可以进行会话管理,不要依赖于将内容存储在“隐藏”字段中。为什么不将响应写回数据库?这样,如果人们第一次没有完成调查,他们就可以恢复调查。