php - 使用电子邮件链接中的代码验证用户帐户

标签 php email user-interface registration email-validation

我正在尝试制作一个小系统,用户在其中注册我的网站后,他们会收到其中一封电子邮件,其中包含一个链接,他们可以在其中单击以激活他们的帐户。

到目前为止,我正在考虑采用以下方式:

  1. 用户注册并按提交。
  2. 根据这个新的“非事件”帐户创建一个长的随机字符串并将其放入数据库。
  3. 系统会向用户提供的地址发送一封电子邮件,其中包含一个链接“www.mysite.com/userclass/validationmethod/user@email.com/3423frqfafkop2341o43”。最后一位是验证码。
  4. 用户点击链接。
  5. 电子邮件和代码与刚创建的帐户相匹配。该帐户被标记为已验证/有效。
  6. 存储在数据库中的验证码被删除或标记为已使用??

您对此有何看法?这是最好的方法吗?作为一个额外的小问题,我需要对该电子邮件地址进行 urlencode 吗?


我使用了以下似乎效果很好的方法。只需要添加数据库函数,它就会被排序:

public function verifyAccount($vCode, $email) {
        $email = urldecode($email);
        if($userId = $this->model->userIdByEmail($email))
        {
            $actualCode = $this->model->getUsersVerificationCodes('code', 'userId', $userId);
            if($actualCode != $vCode)
            {
                $output = 'Invalid code or email.';
            } else {
                $output = 'Success!';
            }
        } else {
            $output = 'Invalid code or email.';
        }

        echo $output;
}

最佳答案

我觉得不错,我也会这样做。但我不会使用链接中的电子邮件。改用这样的东西: mysite.com/confirm_email/749c71f6a29220a3ec168df

编辑:我认为您不需要对电子邮件进行 urlencode,但是当您这样做时,处理地址可能会更容易。

我认为另一个可能的选择是:

mysite.com?email=urlencoded_email&confirm=u34h23ui4h234 取决于您处理 url 参数的方式。

关于php - 使用电子邮件链接中的代码验证用户帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255118/

相关文章:

html - Outlook 2010 在签名中添加链接下划线

python - 在 Django 中将静态文件中的图像添加到多部分电子邮件中

Java GUI,需要使用 Action 监听器吗?

java - 组合框和 JButton 问题

php - ksort 在处理字母数字字符时产生错​​误的结果

PHP计算时间差,结果错误1小时

php - 使用 PDO 执行高级搜索查询的问题

使用私有(private)类函数/变量的 PHP 静态方法

python - 如何使用 django 发送异步电子邮件

python - 使用Python更新GUI中显示的值:已修订(新困难)