【问题标题】:Algorithm to change email of users更改用户电子邮件的算法
【发布时间】:2012-09-27 11:45:59
【问题描述】:

我有网络应用程序,并且在我的网络应用程序中可以更改电子邮件, 如果用户更改他们的电子邮件,这就是效果

  1. 更改电子邮件后将自动注销,我将向新电子邮件发送激活码。
  2. 如果用户在未激活的情况下尝试使用新电子邮件登录,则会显示错误,因为电子邮件未激活。
  3. 当用户更改他们的电子邮件时,在我的数据库中,电子邮件被他们的新电子邮件更改并且我将用户状态从 1 更改为 0,1 是活动用户 0 正在等待激活。如果状态为 1 用户可以登录,但如果状态 0 用户无法登录。已发送给新邮箱用户的激活码可以从0激活到1状态,可以正常登录。

问题是:

  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】:

          您只需为待处理的邮件更改添加一个新表/列。过程会是这样的。

          1. 用户更改电子邮件地址,服务器向旧地址发送确认/激活邮件。同时服务器也会给用户添加一个挂起的邮件更改属性。用户仍需使用旧邮件地址登录。

          2. 用户未激活新地址,使用旧地址登录。告诉用户他仍有待更改的邮件地址。此时用户可以取消邮件更改或转到新邮件地址并激活新地址。

          2.1 用户注销并激活旧邮件地址的邮件更改。在此激活完成之前,用户仍需使用旧邮件地址登录系统。

          1. 激活/确认待处理邮件地址后,主地址出现,待处理属性消失。用户无法使用旧邮件地址登录。

          【讨论】:

            猜你喜欢
            • 2021-11-07
            • 2011-09-09
            • 1970-01-01
            • 2022-09-28
            • 1970-01-01
            • 2016-06-08
            • 2022-01-11
            • 1970-01-01
            • 2020-07-29
            相关资源
            最近更新 更多