首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查activation_code在登录时是否被激活。“只”activation_code

检查activation_code在登录时是否被激活。“只”activation_code
EN

Stack Overflow用户
提问于 2014-06-25 16:31:20
回答 3查看 90关注 0票数 0

这是我在登录时使用的代码:

代码语言:javascript
运行
复制
            $q = $lacz->query("SELECT email, pass, activation_code
                                    FROM users
                                    WHERE  email='". $nazwa_uz_l ."' 
                                    AND pass = '". $haslo_l ."' 
                                    AND activation_code IS NULL ");     

        if($q->num_rows>0) {
            $_SESSION['prawid_uzyt'] = $nazwa_uz_l; }
        else 
        {
            echo 'Pass or Log are wrong, or activation code is not confirmed (check email).';
            exit;
        }

在这个查询中,我检查了所有三件事情:电子邮件、密码和激活代码,然后输出一个错误。我想要做的是在Pass或Log错误时输出第一个错误,当激活代码不是NULL时输出第二个错误(类似于elseif)。我尝试了else if和两个查询,但是我得到了错误。你能帮帮我吗?我核对答案并给点分数,谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-25 16:40:29

从查询中删除“和activation_code为空”,并执行以下操作

代码语言:javascript
运行
复制
if($q->num_rows>0) 
{
  $row = $q->fetch_assoc();
  if(!is_null($row['activation_code']))
  {
    $_SESSION['prawid_uzyt'] = $nazwa_uz_l;
  }
  else 
  {
    echo 'Activation code is not confirmed (check email).';
    exit;
  }
}
else 
{
  echo 'Pass or Log are wrong.';
  exit;
}
票数 1
EN

Stack Overflow用户

发布于 2014-06-25 16:36:21

不要检查查询中的激活代码。只需获取用户信息,以及激活代码字段:

代码语言:javascript
运行
复制
SELECT email, pass, activation_code
..
WHERE email='foo' and pass='bar'

然后,您可以测试代码中的各个条件:

代码语言:javascript
运行
复制
if (number_of_rows == 0) {
   ... bad username/password
} else if ($activation_code == '') {
   ... code is blank/null
}
票数 1
EN

Stack Overflow用户

发布于 2014-06-25 16:37:02

如果从查询的AND activation_code IS NULL子句中删除WHERE,就可以为匹配给定电子邮件/密码的用户提取数据。然后,您将能够确定用户是否存在,或者他们的激活代码是否为空:

代码语言:javascript
运行
复制
$q = $lacz->query("SELECT email, pass, activation_code
        FROM users
        WHERE  email='". $nazwa_uz_l ."' 
        AND pass = '". $haslo_l ."'");

if ($q->num_rows === 0) {
    echo 'Password or email address are wrong.';
    exit;
} else {
    $row = $result->fetch_assoc();
    if (empty($row['activation_code'])) {
        echo 'Activation code is not confirmed.';
        exit;
    } else {
        $_SESSION['prawid_uzyt'] = $nazwa_uz_l;
    }
}

备注(不相关答案):我强烈建议使用参数化查询,而不是直接将值插入SQL;如果您喜欢当前的方法,请确保首先清理输入以防止SQL注入。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24414080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档