忘记密码电子邮件链接(php)返回错误,尽管电子邮件发布在数据库

时间:2017-04-21 03:03:44

标签: php mysql

在从头开始构建登录/注册系统以自学PHP,mysql等的过程中,我正在尝试建立一个忘记密码"使用令牌的电子邮件链接系统,以重置忘记的密码。

我的数据库列设置如下: id,姓名,电子邮件,用户名,密码(不要担心,不是纯文本!),日期,个人资料,填充,令牌(最终标记为已发送的电子邮件以便重置),已使用(ENUM 0,1)。

现在为PHP

<?php
if(!isset($_GET['email'])){
                  echo'<form action="forgotpassword.php">
                      Enter Your Email Id:
                         <input type="text" name="email" />
                        <input type="submit" value="Reset My Password" />
                         </form>'; exit();
                   }

$email=$_GET['email'];

function connect() {
        $link = mysql_connect('localhost', DB_USER, DB_PASS);

        if (!$link) {
            die('Could not connect: ' . mysql_error());
        }

        $db_selected = mysql_select_db(DB_NAME, $link);

        if (!$db_selected) {
            die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
        }
    }

    $q="SELECT email FROM users WHERE email='".$email."'";
    $r=mysql_query($q);
    $n=mysql_num_rows($r);

if($n==0){echo "Email id is not registered";
    die();

}

代码继续,但我目前正在停止使用&#34;电子邮件ID未注册&#34;。但是,我确实在数据库中有一个存储电子邮件的测试条目。选择&#34;重置我的密码&#34;按钮,显示错误。

我知道我目前没有使用预先准备好的陈述。希望在我学习如何使用绑定之前看到这个工作。

最终,问题是,我正在尝试选择已在&#34;用户&#34;中注册的电子邮件。电子邮件设置为$ _GET [&#39; email&#39;]的表格,我不明白为什么这不起作用?

感谢您的帮助。如果需要更多信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

  1. 你在函数中有数据连接,但你没有调用它,尝试在connect();之前添加$q="SELECT email FROM users WHERE email='".$email."'";
  2. 将查询修改为:$q="SELECT email FROM users WHERE email='".trim($email)."'"; trim将有助于删除空格(如果有)
  3. 尝试使用mysqli,因为不推荐使用mysql

    <?php
    if(!isset($_GET['email'])){
        echo'<form action="forgotpassword.php">
        Enter Your Email Id:
        <input type="text" name="email" />
        <input type="submit" value="Reset My Password" />
        </form>'; exit();
    }
    
    $email=$_GET['email'];
    
    function connect() {
        $link = mysql_connect('localhost', DB_USER, DB_PASS);
    
        if (!$link) {
            die('Could not connect: ' . mysql_error());
        }
    
        $db_selected = mysql_select_db(DB_NAME, $link);
    
        if (!$db_selected) {
            die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
        }
    }
    connect();
    $q="SELECT email FROM users WHERE email='".trim($email)."'";
    $r=mysql_query($q);
    $n=mysql_num_rows($r);
    
    if($n==0){echo "Email id is not registered";
    die();
    
    }
    

答案 1 :(得分:1)

  do
    {
         digit = number % 10;
        switch (digit) {
            case 0:
                [self prependNumber:@"zero"];
                break;
            case 1:
                [self prependNumber:@"one"];
                break;
            case 2:
                [self prependNumber:@"two"];
                break;
            case 3:
                [self prependNumber:@"three"];
                break;
            case 4:
                [self prependNumber:@"four"];
                break;
            case 5:
                [self prependNumber:@"five"];
                break;
            case 6:
                [self prependNumber:@"six"];
                break;
            case 7:
                [self prependNumber:@"seven"];
                break;
            case 8:
                [self prependNumber:@"eight"];
                break;
            case 9:
                [self prependNumber:@"nine"];
                break;
            default:
                break;
        }


        number /= 10;
    }
    while (number != 0);

/************/
-(void) prependNumber:(NSString*)str{
 NSLog(str);
}