首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在网站上做向导?

如何在网站上做向导?
EN

Stack Overflow用户
提问于 2012-10-12 14:00:14
回答 2查看 519关注 0票数 3

在一个网站中,我想实现一个巫师。它应该看起来像一系列的形式。

我的要求是:

  • 用户应该能够使用“后退”和“转发”浏览器按钮,而无需提示重新提交表单(在来回操作时)。
  • 如果用户在先前填充的页面上返回或转发,则应自动完成这些字段。
  • 如果用户试图访问一个页面而没有填写前面的步骤,则应该相应地重定向他(最后一个必需的页面)。
  • 用户应该能够恢复表单完成后,离开和回来。
  • 在我的模型中,每一页都需要填充前一页。每一页都有自己的验证。
  • Url应该很漂亮。
  • 向导应该在没有javascript的情况下工作(但不是强制的)。

你将如何实现它?(一系列http post表单,http获取表单,是否通过javascript提交?)

抽搐:

我计划存储会话中的所有信息,在向导的末尾,将信息保存在数据库中,并删除当前的会话信息。这样,我就能够自动完成字段,并知道用户在哪里完成向导。

我的主要关切是:

  • 如果我使用http posts表单实现,浏览器将提示重新提交每个表单(我不知道如何控制该表单)
  • 如果我用http表单实现它,urls就会充满信息,而且可能会很长。这不是索取请求的手段。
  • 如果我通过http post通过javascript提交每个表单,将不会有提示,但是我的向导将不使用javascript (也许解决方案是覆盖默认的表单行为,让它与javascript一起工作,而不是使用javascript)
EN

回答 2

Stack Overflow用户

发布于 2012-10-12 20:55:54

我不建议将会话用于任意的数据存储!这往往会变得混乱快速,而且如果您最终使用会话进行登录,也会破坏安全模型。将您的设置数据与您的设置数据分开,并专门为设置创建一个表,或者使用javascript localStorage!

在您的例子中,您所描述的内容听起来很像一个长表单,它具有多个表单部分的显示/隐藏功能,并增加了持久存储的怪癖!

换句话说,而不是form1 > form2 > form3 > form4 > done

form_section_1 > validate, save data, and then display form_section_2 and hide form_section_1 > validate, save data, and then display form_section_3 and hide form_section_2 > etc > true form submit once

对于没有javascript的用户,只要在提交任何章节后,就在php中验证他们的信息。您可以将他们的session_id标识的信息存储到一个设置表中,如果您真的想让它存储,即使是在边缘情况下。

为了简单起见,在这个场景中,我将使用localStorage存储每个验证中的所有数据,并使用javascript防止意外离开主表单。如果您真的必须通过支持(比如ie7 ( http://caniuse.com/#search=localStorage ) )来使您的生活复杂化,那么检测localStorage,在没有它的情况下,将数据传递给一个php脚本,然后将其放入一个数据容器对象中,并将其转换为一个json包,以便保存在会话中的单个变量中,或者更好地保存在数据库中的一个设置表中。

票数 0
EN

Stack Overflow用户

发布于 2012-10-12 14:10:01

我将使用PHP会话变量来存储向导不同页面之间填充的数据。通过使用html表单,您将获得重新发送数据的提示,如果您返回浏览器历史记录,我不知道有此修补程序.但是,用PHP来存储变量很容易,给出表单method=post,并使用$_REQUEST命令检索PHP文档中的信息,以避免长URL使用GET。祝你好运,如果我想到什么就会更新。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12860718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档