【问题标题】:Algorithm to change email of users更改用户电子邮件的算法
【发布时间】:2012-09-27 11:45:59
【问题描述】:
我有网络应用程序,并且在我的网络应用程序中可以更改电子邮件,
如果用户更改他们的电子邮件,这就是效果
- 更改电子邮件后将自动注销,我将向新电子邮件发送激活码。
- 如果用户在未激活的情况下尝试使用新电子邮件登录,则会显示错误,因为电子邮件未激活。
- 当用户更改他们的电子邮件时,在我的数据库中,电子邮件被他们的新电子邮件更改并且我将用户状态从 1 更改为 0,1 是活动用户 0 正在等待激活。如果状态为 1 用户可以登录,但如果状态 0 用户无法登录。已发送给新邮箱用户的激活码可以从0激活到1状态,可以正常登录。
问题是:
- 如果用户的新邮箱是假的或无效的,用户将无法再次登录。
你有什么建议来解决这个问题?
感谢您的回答。
【问题讨论】:
标签:
php
database
login
content-management-system
email
【解决方案1】:
仅在他们点击激活码/链接后更改电子邮件地址(您在第 3 步中所做的操作)。
【解决方案2】:
我会用下一个结构创建一个名为 user_emails 的附加表:
email_id
电子邮件
用户ID
当前_活动
添加日期
从用户表迁移电子邮件数据。
然后,我会更改我的应用程序,以便在您需要获取用户电子邮件的地方使用这个新表。
并在用户表中删除字段电子邮件。
在此之后,您可以支持一个用户的多封电子邮件,这有很多原因。
user_emails 表中的 current_active 字段需要为某些电子邮件设置为活动,只要用户没有确认新电子邮件。
确认后,只需将旧电子邮件 current_active 设置为 0,将新电子邮件设置为 1,然后在需要用户电子邮件的地方使用该条件。
【解决方案3】:
不要自动注销它们。如果您愿意,您已经可以重新生成会话 ID,但我认为这不需要任何注销。
然后,除非经过验证,否则不要使新电子邮件地址有效。还要求更改电子邮件的用户在开始更改之前需要再次提供密码。
然后发送验证邮件。确认无误后,设置新的登录邮箱。
【解决方案4】:
您只需为待处理的邮件更改添加一个新表/列。过程会是这样的。
用户更改电子邮件地址,服务器向旧地址发送确认/激活邮件。同时服务器也会给用户添加一个挂起的邮件更改属性。用户仍需使用旧邮件地址登录。
用户未激活新地址,使用旧地址登录。告诉用户他仍有待更改的邮件地址。此时用户可以取消邮件更改或转到新邮件地址并激活新地址。
2.1 用户注销并激活旧邮件地址的邮件更改。在此激活完成之前,用户仍需使用旧邮件地址登录系统。
- 激活/确认待处理邮件地址后,主地址出现,待处理属性消失。用户无法使用旧邮件地址登录。