首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CodeIgniter多步注册

CodeIgniter多步注册
EN

Stack Overflow用户
提问于 2013-01-14 11:43:37
回答 3查看 1.5K关注 0票数 0

我目前正在开发一个使用CodeIgniter的web应用程序,具体地说,我正在构建注册表单。

这个表单由三个不同的步骤组成,我想知道在两个步骤之间保存信息的最好方法是什么?我只想在最终阶段完成后将所有信息保存到数据库中。

我应该只使用原生PHP会话来做这件事吗?或者我应该使用CI flashdata?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-14 12:48:36

我使用了隐藏字段和会话。我倾向于在每个阶段结束时将所有表单值保存到一个文本文件中。然后,如果在任何给定的阶段发生了什么,我可以选择如何处理保存在文本文件中的数据。

例如,如果您希望可以在第一页捕获电子邮件地址。如果表单没有完成(就像在所有阶段都成功完成一样),那么您可以在适当的阶段向潜在用户发送一封电子邮件,其中包含注册表单的链接。潜在用户不需要重新填写他们已经填写的任何字段,您就有机会将他们重新捕获为用户。

我倾向于使用文本文件作为默认方法来保存多阶段表单中任何阶段的所有数据。在表单的末尾,我可以将数据处理到DB中并删除文本文件。为了捕获部分完成的注册,我可以编写一个脚本,该脚本通过每分钟运行一次的cronjob执行。我总是在数据文件中保存一个时间戳,表示文件上次更新的时间。如果时间戳超过X分钟,你可以在上面运行你的未完成注册脚本,或者直接删除它。

在每个阶段保存数据都很简单。在第一个阶段之后,您将使用$dataFile = file_put_contents(json_encode($data)); where $data = array('timestamp'=>...) + $_POST;创建$dataFile。在第一个阶段之后的每个阶段,我都使用$data = json_decode(file_get_contents($dataFile), TRUE) + $_POST;$data['timestamp'] = ...;。然后使用file_put_contents将其保存回文件。显然,您需要跟踪$dataFile变量,但通过隐藏字段或会话数据很容易做到这一点。

文件在被处理和删除之前只会存在X分钟,但是如果你想在短时间内保证文本文件的安全性,那么我建议你查找一个密码,或者在简单的Ceasar密码上创建你自己的变体。在字段名称和值上使用密码。

早在12月份,我就在为自己解决最新CodeIgniter中的多阶段表单问题。我不能说这是一个被普遍接受的最佳实践,但文本文件在过去对我来说工作得很好。我在这里发布了一个多阶段表单的示例代码:Multi-Stage Form Example

票数 1
EN

Stack Overflow用户

发布于 2013-01-14 12:19:17

您可以将值发布到下一个表单,在该表单中您可以使用隐藏字段来存储这些值,这样当您发布最后一个表单时,您就拥有了所有的值,并且可以一次处理它们。

票数 0
EN

Stack Overflow用户

发布于 2016-03-06 15:41:44

我在我的最新项目中遇到了这种情况,我使用Codeigniter会话将验证后提交的数据保存在userdata会话中作为数组,最后一步我将数据发送到DB

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

https://stackoverflow.com/questions/14313085

复制
相关文章

相似问题

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