繁体   English   中英

从查询中获取结果并返回值? PHP和MySQLi

[英]Getting a result from a query and returning a value? PHP & MySQLi

当我单击“提交”时,输入验证有效,但是即使我正确输入了用户名和密码(存​​储在数据库中的密码也与输入时完全一样),但考虑到哈希值,但我得到的只是错误消息,我的组合不正确。

这是我的登录脚本:

$username = $_POST['username'];
$password = $_POST['password'];

if (isset($_POST['submit']) === true) {

$login = login($username, $password);

if (empty($username) === true || empty($password) === true) {
    $errors[] = "Please fill in all fields";
} elseif ($login === false) {
    $errors[] = "That username and password combination is incorrect";
} else {
    $_SESSION['login'] = $login;
    echo 'Logged in';
}
}

这里是函数:

function login($username, $password) {
    global $conn;
    $query = "SELECT userId FROM users where userName = '$username' AND userPass = '$password'";
    $result = mysqli_query($conn, $query);
    $row_count = mysqli_num_rows($result);
    if ($row_count >= 1) {
        return $query['userId'];
    } else {
        return false;
    }
}

在此处输入图片说明

我建议您尝试做的第一件事是手动比较md5哈希密码与表中列出的密码。 如果您绝对确定它们相等,请使用来自toad或phpmyadmin的值运行手动查询,然后查看是否得到结果。 如果不是这样,问题可能出在查询中。 如果得到结果,请检查mysqli_num_rows函数,而不是返回用户ID,而是在测试环境中回显它。

您还做了什么调试工作?

您可以简化它,但是,我建议您不要在没有XSS清理的情况下接受用户输入。 特别是对于诸如登录之类的表。

function login($username, $password) {
    global $conn;
    $password = md5($password);
    $query = "SELECT userId FROM users where userName = '$username' AND userPass = '$password' LIMIT 1";
    $result = mysqli_query($conn, $query);
    $row_count = mysqli_num_rows($result);
    if ($row_count >= 1) {
        return $query['userId'];
    } else {
        return false;
    }
}

我猜您的代码需要一些修复,因为在查询数据库后检查参数是否为空,然后在检查用户密码是否正确之前获取用户ID。等等。

但首先,在行之后

    $query = "SELECT userId FROM users where userName = '$username' AND      userPass = '$password'";

你为什么不放

die($query);

运行页面,复制结果,将其粘贴到phpMyAdmin查询框中,然后查看结果是否符合您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM