2012-08-26 45 views
1

我对PHP和stackoverflow相当新,但我知道的基础知识,我可以很快地捡起东西。存储表单数据

我有一个应用程序记住,涉及提供用户组的复选框和单选按钮与每个组在单独的页面上,并从菜单抵达。

例如 国籍 办事处名称 收入档案

他们不必从每个组中选择,当他们做出选择/ s的他们可以查询基于他们的选择一个数据库,然后显示数据。我希望他们能够通过重新访问任何选择页面然后重新查询数据库来调整他们的选择。

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

我只需要在这个阶段的指针。

感谢

贾斯汀

回答

0

我会以如下方式设计的:

创建具有任何和所有你想了解他们的数据形式。编写PHP,这样如果你提供用户的ID(很快就会得到),如果从数据库查询他们的记录并显示他们已经保存的所有内容。他们可以进行他们喜欢的任何更改并提交表单。这会更新他们在数据库中的记录,并在他们下次查看页面时显示新信息。

当表单被提交时,它应该首先检查它们是否已经存在 - 如果是,更新记录 - 如果没有,则插入它。你可以在PHP中做到这一点,但你也可以通过一个漂亮的mysql语句来做到这一点(插入...重复密钥更新)。

当用户创建一个帐户时,他们的登录名/用户名被绑定到数据库中的唯一ID。当他们验证了这一点(通过再次登录)该ID被传递给会话变量,以便您可以随时在数据库中轻松访问他们的数据。

最后,我建议,当你这样做,用准备好的发言中获取数据,并从数据库中,我会建议PDO自己,这是不错的,它可以是跨数据库兼容等。如果你正在寻找安全性,我建议不要直接存储密码,而是将其密码保存并保留一个经过验证的散列。将一个半唯一标记直接插入蝙蝠可能是一个好主意,这样如果他们忘记了密码,您可以将它发送给他们以通过链接返回进行验证。另外,将用户名/登录名存储在cookie中可以,但从不在其中存储密码。事实上,千万不要在会话中存储密码 - 一旦它们得到验证,只需将存储在某个标志中,然后检查该标志。

编辑:

如果能够给用户在过程开始分配一个唯一的ID(如说正从用户的电子邮件),那么你可以给他们一个唯一的ID(或赫克,在捏,使用他们的电子邮件地址),那么你可以从一开始就插入数据到最后一行。 Mysql提供insert ... on duplicate key update语法。这意味着您可以将数据插入传递每个页面的行中,随时参阅它并作为奖励,因为您使用的是像他们的电子邮件地址这样的唯一键,这将使他们与数据绑定,他们能够输入一些数据,离开您的网站,稍后再回来并填写其余的内容。

+0

感谢您的回复,很快。也许我不像我本来那么清楚。要查询的数据是只读的,复选框/单选框仅用于构建查询字符串以检索数据。没有关于用户的信息被存储。 –

+0

@JustinOakley我不知道我跟着。您正在从数据库构建数据以查找有关用户的信息,并且您正在从数据库中抽取数据?什么是完全的查询?这是一个多页面表单,你最终要提交吗? – Fluffeh

+0

是的,这是一个多页的表单,我想在最后提交吗?提交只是为了创建sql字符串并显示数据,而不是写入数据库。我也希望用户能够在提交之前或之后拉出任何一个或多个这些页面以更改选择。我可以使用显示表单页面的机制,重新访问表单页面并查询和显示数据。谢谢 –