相关疑难解决方法(0)

电子邮件确认码的最佳做法

我正在创建一个涉及用户注册的PHP网站,我想知道"电子邮件确认"代码的最佳实践.

新用户必须确认他们的电子邮件地址 - 我这样做是通过生成代码并通过电子邮件将其发送给用户,然后他可以使用该电子邮件激活他的帐户.我没有将这个密钥存储在数据库中,而是使用了一个方便的小解决方法:代码是以下结果:

md5("xxxxxxxxx".$username."xxxxxxxxxxx".$timestamp."xxxxxxxxx");
Run Code Online (Sandbox Code Playgroud)

其中$ timestamp是指用户创建时间.总的来说,我对此非常满意,但后来我开始思考,这是否足够安全?碰撞的可能性怎么样?我还需要生成密码重置等代码.如果我使用类似的方法,碰撞可能导致一个用户无意中重置另一个用户的密码.这不好.

那你怎么做这些事呢?我的想法是以下格式的表格:

codePK (int, a-I), userID (int), type (int), code (varchar 32), date (timestamp)
Run Code Online (Sandbox Code Playgroud)

其中'type'为1,2或3表示"激活","电子邮件更改"或"密码重置".这是一个很好的方式吗?你有更好的方法吗?

使用类似上面的方法,我可以在不使用cron-jobs的情况下自动删除两天以上的任何内容吗?我的主人(almostfreespeech.net)不支持他们.如果可能的话,我想避免在外部主机上有一个cron-job,这是一个删除东西的脚本,因为那只是凌乱= P.

谢谢!
马拉

更新:
澄清:我已经意识到安全和安全地执行此任务的唯一方法是使用数据库,这是原始功能试图避免的.我的问题是如何构建表(或表?).有人建议我不要使用codePK,只需将代码设为PK即可.简而言之,我的问题是:这是你做的吗?

php activation email-confirmation

15
推荐指数
1
解决办法
7637
查看次数

标签 统计

activation ×1

email-confirmation ×1

php ×1