第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 MySQL 數(shù)據(jù)庫中的 PHP 驗(yàn)證散列密碼

使用 MySQL 數(shù)據(jù)庫中的 PHP 驗(yàn)證散列密碼

PHP
青春有我 2022-12-23 14:35:13
我正在嘗試使用 HTML、PHP 和 SQL 開發(fā)登錄表單。由于我是 PHP 的新手,所以我一直在絞盡腦汁想弄清楚我的問題是什么以及如何解決它,所以我希望得到一些幫助。我想要做的是檢查用戶在 HTML 登錄表單上的輸入(在本例中為密碼)是否與存儲(chǔ)在數(shù)據(jù)庫中的散列密碼相匹配。但是,我目前遇到一個(gè)問題,它沒有這樣做。代碼應(yīng)驗(yàn)證密碼,如果密碼正確,則應(yīng)回顯“密碼和用戶名匹配”,否則應(yīng)回顯“密碼不正確”,但代碼不會(huì)回顯任何內(nèi)容。這是我試過的:使用用戶名獲取密碼我正在使用 PHP 的password_hash插件來散列和驗(yàn)證用戶的密碼。所以我的問題是,如何使用存儲(chǔ)在數(shù)據(jù)庫中的散列密碼安全地驗(yàn)證用戶的輸入(密碼)?這是PHP代碼:if($_SERVER["REQUEST_METHOD"] == "POST") {    //declare variables and set values to null    $username = $pass = "";    $username = $_POST['username'];    $pass = $_POST['pass'];    //check if username exists    $stmt = $conn->prepare("SELECT userName FROM userDetails WHERE userName=?");    $stmt->bind_param("s", $prepname);    $prepname = $username;    $stmt->execute();    $result = $stmt->get_result();    if ($result->num_rows > 0) {        //if username exists, check if password is linked to user        echo "user exists";        $stmt = "SELECT userPass FROM userDetails WHERE userName=?";        $stmt->bind_param("s", $prepname);        $prepname = $username;        $hashpass = $stmt->execute();        $stmt->bind_result($hashpass);        $stmt->fetch();        if (password_verify($pass, $hashpass)) {            echo "password and username match";        }        else {            echo "incorrect password";        }    }     else {        echo "That user does not exist!";        return false;    }}編輯:感謝@Jovi,我已經(jīng)修復(fù)了之前的錯(cuò)誤,但是我現(xiàn)在收到了一個(gè)新錯(cuò)誤:Warning: Illegal string offset 'userPass' in /home/toeaimc2/public_html/php/pages/login.php on line 75編輯: @Jovi 現(xiàn)在已經(jīng)解決了這個(gè)問題!感謝大家的幫助!
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

bind_param在字符串上調(diào)用該方法,它應(yīng)該是一個(gè)語句對(duì)象。

您缺少為提取密碼的查詢創(chuàng)建準(zhǔn)備好的語句對(duì)象的方法調(diào)用:

    $stmt = $conn->prepare("SELECT userPass FROM userDetails WHERE userName=?");
        $stmt->bind_param("s", $prepname);


查看完整回答
反對(duì) 回復(fù) 2022-12-23
  • 1 回答
  • 0 關(guān)注
  • 101 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)