我的忘记密码是否正常工作或我遗失了什么?

时间:2011-09-02 17:43:04

标签: php mysql

当用户注册时,md5(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM))列中会有一个随机值verified,直到他验证了自己的帐户为止。发生这种情况时(通过电子邮件),verified将为空。

当用户想要再次收到他的电子邮件验证时,请在文本框中输入他的电子邮件,并且有4种可能的情况:

  1. 无效的电子邮件 - >请纠正,你的-email.php
  2. 有效的电子邮件 - >这个电子邮件此结果未found.php
  3. 在DB +验证中找到有效的电子邮件+ - >是-已经verified.php
  4. 在DB +中找到有效的电子邮件+尚未验证 - >仍然未verified.php
  5. 我的问题是,如果我的逻辑和结构是正确的,如果我忘记了什么。它可以正常工作。

    if ($_POST["email"]) {
    
    require_once('config.php');
    
        $errflag = false;
    
    $send2email = mysql_real_escape_string($_POST["email"]);
    
        if (!filter_var($send2email, FILTER_VALIDATE_EMAIL)) {
        $errflag = true;
        }    
    
        if($errflag) {
            header("location: please-correct-your-email.php");
            exit();
        } 
    
        $qry = "SELECT verified FROM members WHERE email='$send2email'";
        $result = mysql_query($qry);
        $member = mysql_fetch_assoc($result);
    
        if($result) {
            if (mysql_num_rows($result) == 0)  {
                header("location: this-email-is-not-found.php");
                exit();
            }
            elseif ( (mysql_num_rows($result) > 0) && ($member['verified']) ) {
                header("location: still-not-verified.php");
                exit();
            }
        else {
                header("location: is-already-verified.php");
                exit();
        }
                }
    
                        } //this is for if post email 
    

1 个答案:

答案 0 :(得分:0)

我将验证更改为布尔字段。这意味着

verified BOOLEAN
------------------
1
0

而不是“当他未经验证时,字段已填满,当他验证时,字段为空白”。这有点令人困惑。

我会搬家

    $member = mysql_fetch_assoc($result);

if ($result){

我会添加确认代码,因为没有安全代码(验证码)进行电子邮件验证是没有意义的