簡體   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