如何检查用户是不是存在于数据库php中

Posted

技术标签:

【中文标题】如何检查用户是不是存在于数据库php中【英文标题】:How to check if user exists in database php如何检查用户是否存在于数据库php中 【发布时间】:2015-02-02 23:41:50 【问题描述】:

由于某种原因,当我在表单中输入现有的用户名和密码时,输出总是“用户不存在”,我该如何更改它,以便在用户存在时将用户带到 Welcome.php 页面如果用户不存在,则“用户不存在”。数据库称为 TEST,表称为 USERS。

<?php 
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "test";

// Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
    if ($conn->connect_error) 
        die("Connection failed: " . $conn->connect_error);
    

    $user = $conn->real_escape_string($_POST['username']);
    $pass = $conn->real_escape_string($_POST['password']);

    $query = "SELECT `username` AND `password` FROM `users` WHERE `username` = '$user' AND `password` = '$pass'";

    $result = $conn->query($query);
    if($result->num_rows < 0) 

       header('Location:welcome.php');
       die();
    
    else $message = 'User does not exist';
?>

    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>Test</title>
        </head>

        <body>
            <form method="post" action="testing.php" enctype="multipart/form-data">
                <?php if(isset($message)) : ?>
                    <div class="error"><?php echo $message; ?></div>
                <?php endif; ?>

                Username: <input type="text" value="" name="username" /><br /><br />
                Password: <input type="text" value="" name="password" /><br /><br />
                <input type="submit" name="submit" value="Log In"/><br /><br />
                <a href="register.php">Register</a>
            </form>
        </body>
    </html>

【问题讨论】:

请查看用于存储的散列密码。查看 PHP5.5+ 中包含的 password_hash 函数。 我帮助你创建了这个表单,似乎我在这里犯了错误 if($result->num_rows 肯定需要更改为 if($result->num_rows > 0) 【参考方案1】:

num_rows() 永远不会返回小于零的值。如果失败,它将返回布尔值 false、0 或正整数。如果用户不存在或密码错误,则返回零行:

if ($result->num_rows == 0) 
     die("Wrong user/pass");
 else if ($result->num_rows > 1) 
     die("Duplicate user accounts!");
 else 
     die("Welcome");

【讨论】:

能否把单引号换成双引号?

以上是关于如何检查用户是不是存在于数据库php中的主要内容,如果未能解决你的问题,请参考以下文章

如何检查用户名是不是存在于数据库中

Core Data - 如何检查用户是不是存在于数据库中?

检查用户名是不是存在于数据库中

如何检查用户是不是存在于 Firebase 中?

C# - 如何检查用户的输入是不是存在于组合框中(使用的数据绑定项)

如何检查某个数据是不是已存在于firestore中