存储表单数据


storing form data

我对php和stackoverflow还很陌生,但我知道基本知识,而且我可以很快学会。

我脑海中有一个应用程序,它包括向用户展示一组复选框和单选按钮,每组都在一个单独的页面上,并从菜单中获得。

例如。国籍办公室名称收入概况

他们不必从每组中进行选择,当他们做出选择时,他们可以根据自己的选择查询数据库,然后显示数据。我希望他们能够通过重新访问任何选择页面来调整他们的选择,然后重新查询数据库。

当他们浏览这些选择表格时,我如何最好地存储他们的选择。我使用cookie还是会话变量?我曾想过将他们的选择存储在数据库中,但这可能会变得复杂。

在这个阶段我只需要指点。

感谢

Justin

我会以以下方式设计它:

创建一个表单,该表单包含您想要的关于它们的任何和所有数据。编写PHP,这样,如果您提供用户的ID(很快就会得到),如果您从数据库中查询他们的记录,并显示他们保存的所有内容。他们可以进行任何更改并提交表单。这会更新他们在数据库中的记录,下次查看页面时,会显示新信息。

当表单提交时,它应该首先检查它们是否已经存在-如果已经存在,则更新记录-如果不存在,则插入它。你可以在PHP中执行此操作,但也可以通过一个漂亮的mysql语句执行此操作(在重复密钥更新时插入…)。

当用户创建帐户时,他们的登录名/用户名与数据库中的唯一ID绑定。当他们(通过再次登录)验证这一点时,ID会传递给会话变量,这样您就可以在任何时候从数据库轻松地访问他们的数据。

最后,我建议当你这样做的时候,使用准备好的语句来获取数据库中的数据,我建议PDO自己,这很好,它可以跨数据库兼容等等。如果你希望获得良好的安全性,我建议不要直接存储密码,而是对其进行盐析,并保留一个即时验证的哈希。一开始就插入一个半唯一的令牌可能是个好主意,这样,如果他们忘记了密码,你可以通过链接将其发送给他们进行验证。此外,在cookie中存储用户名/登录名是可以的,但永远不要在其中存储密码。事实上,也永远不要在会话中存储密码——一旦验证了密码,只需存储某种类型的登录标志并进行检查。

编辑:

如果你能够在流程开始时为用户分配一个唯一的ID(比如从用户那里获得电子邮件),然后你可以给他们一个唯一ID(或者,在必要时,使用他们的电子邮件地址),那么你就可以从一开始就将数据插入最后一行。Mysql提供了insert ... on duplicate key update语法。这意味着你可以将数据插入到传递的每一页的行中,在任何时候都可以引用它,这是一个额外的奖励,因为你使用了一个唯一的密钥,比如他们的电子邮件地址,这将使他们与数据绑定,他们可以输入一些数据,离开你的网站,稍后回来并填写其余的数据。