亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 bcrypt 進行登錄驗證

使用 bcrypt 進行登錄驗證

PHP
青春有我 2023-12-15 15:03:47
我有一個用 Laravel 構建的網絡應用程序。我正在另一個網站上工作,但不是在 Laravel 上工作。我需要使用 Laravel 站點數據庫上的用戶表對這個新站點上的用戶進行身份驗證。密碼使用 bcrypt 進行哈希處理。我嘗試在用戶登錄之前驗證密碼,但我似乎遺漏了一些東西。有人可以幫忙嗎?<?php if (isset($_POST['login'])) {    $user  = mysqli_real_escape_string($_POST['email']);    $pass  = mysqli_real_escape_string($_POST['password']); //input entered    $dpass = password_hash('$pass', PASSWORD_DEFAULT)."\n";    echo $dpass;        $query   = mysqli_query($conn, "SELECT * FROM users WHERE `email` = '$user' AND `password` ='$pass'");    $numrows = mysqli_num_rows($query);    if ($numrows != 0) {        while ($row = mysqli_fetch_assoc($query)) {            $dbemail    = $row['email'];            $dbpassword = $row['password'];        }        if ($user === $dbemail && password_verify($pass, $dbpassword)) {            session_start();            $_SESSION['email'] = $username;            // Redirect Browser            header("Location:mentor.php");        }    } else {        echo "<div class='alert alert-danger alert-dismissible'>            <a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>            <strong>Warning!</strong> Invalid credentials.        </div>";    }}?>
查看完整描述

2 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

經過上述評論的建議后,我得出了這個有效的結論。


 <?php 

                        if(isset($_POST['login'])){

                         $user = mysqli_real_escape_string($conn,$_POST['email']);

                         $pass = mysqli_real_escape_string($conn,$_POST['password']); //input entered


                         $query = mysqli_query($conn, "SELECT * FROM users WHERE `email` = '$user'");

                         $numrows = mysqli_num_rows($query);

                         if($numrows !=0)

                         {

                         while($row = mysqli_fetch_assoc($query))

                         {

                         $dbemail=$row['email'];

                         $dbpassword=$row['password'];

                         }

                         if(password_verify($pass, $dbpassword))

                        {

                         session_start();

                         $_SESSION['email'] = $username;

                         //Redirect Browser

                         

                         }

                         }

                         else

                         {

                        echo "<div class='alert alert-danger alert-dismissible'>

                          <a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>

                          <strong>Warning!</strong> Invalid credentials.

                        </div>";

                         }

                        }?>


查看完整回答
反對 回復 2023-12-15
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

不確定,但你嘗試過嗎

password_verify(mysqli_real_escape_string($_POST['password']), $dbpassword)

我的意思是比較未加密的密碼與哈希值。在 Laravel 中

Hash::check()

還需要非哈希密碼作為參數。


查看完整回答
反對 回復 2023-12-15
  • 2 回答
  • 0 關注
  • 196 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號