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

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

PHP password_hash(),password_verify()

PHP password_hash(),password_verify()

PHP
慕哥6287543 2019-12-06 09:33:39
我的注冊腳本接受用戶的密碼,然后使用PHP的password_hash函數(shù)對密碼進行加密,然后將其放入數(shù)據(jù)庫中。當我使用剛剛創(chuàng)建的用戶登錄時,出現(xiàn)了檢查密碼是否相同的錯誤。就我而言,不是。在登錄腳本中調(diào)用password_verify函數(shù)時,我在做什么錯?寄存器if($_SERVER["REQUEST_METHOD"] == "POST"){    function secure($data){        $data = trim($data);        $data = stripslashes($data);        $data = htmlspecialchars($data);        return($data);    }    $p_num = secure($_POST["p_number"]);    $first_name = secure($_POST["first_name"]);    $last_name = secure($_POST["last_name"]);    $email = secure($_POST["email"]);    $password = secure($_POST["pw"]);    $verify_password = secure($_POST["pw_verify"]);    $program = secure($_POST["program"]);    $role = secure($_POST["role"]);    $logged_in = 0;    $registered = 0;    $image = "../images/profile_placeholder.png";    if($password != $verify_password){        echo "Nope.  Passwords";    }    else{        $registered = 1;        $password = password_hash($password, PASSWORD_DEFAULT);        $insert = "INSERT INTO `$user_table`(`user_id`, `first_name`, `last_name`, `password`, `image`, `email`, `program`, `role`, `logged_in`, `registered`) VALUES('" .$p_num ."', '" .$first_name ."', '" .$last_name ."', '" .$password ."', '" .$image ."', '" .$email ."', '" .$program ."', '" .$role ."', '" .$logged_in ."', '" .$registered ."')";        $query = mysqli_query($connect, $insert);        echo "Success!";    }}這是我執(zhí)行var_dump時得到的:string(1) "1" string(16) "$2y$10$0aysCso3b"很明顯,密碼沒有匹配在一起。因此,在注冊腳本上,密碼被散列并發(fā)送到數(shù)據(jù)庫。然后,當用戶登錄時,登錄腳本會查看用戶輸入的登錄密碼,然后使用password_verify將其與數(shù)據(jù)庫中的哈希密碼進行比較。但是,哈希密碼不接受未哈希的密碼作為匹配項。我不明白的是,為什么?
查看完整描述

3 回答

?
暮色呼如

TA貢獻1853條經(jīng)驗 獲得超9個贊

朋友,因為我們使用唯一的用戶名登錄,因此我們必須僅使用用戶名從數(shù)據(jù)庫中獲取密碼/數(shù)據(jù)。


例:


<?php

    $connect = mysqli_connect($localhost, $username, $pwd, $database) or die("Opps some thing went wrong");


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

      extract($_POST);


     // Get Old Password from Database which is having unique userName

     $sqlQuery = mysqli_query($connect, "select * from loginTable where User='$username'");

     $res = mysqli_fetch_array($sqlQuery);

     $current_password = $res['userPassword'];


     if (password_verify($enteredPassword, $current_password)) { 

        /* If Password is valid!! */

        $_SESSION['id'] = $res['id'];

        header("location: home.php");

     }

     else { 

        /* If Invalid password Entered */

        $alt = "Login Failed! Wrong user ID or Password";

        header("location: index.php?m=$alt");

     }

  }

?>

它正在為我工作...我正在從數(shù)據(jù)庫中獲取密碼,并使用PHP API與輸入的密碼進行比較,即password_verify($ enteredPassword,$ current_password)


查看完整回答
反對 回復 2019-12-06
?
縹緲止盈

TA貢獻2041條經(jīng)驗 獲得超4個贊

您讓我檢查數(shù)據(jù)庫字段長度是正確的。不是255,那是打破它的原因。非常感謝您幫助我解決這個問題。我也在研究準備好的語句,我習慣于手動阻止SQL注入,直到最近我才聽說過它們,到目前為止,我發(fā)現(xiàn)它們非常簡單。再次感謝您的幫助。

查看完整回答
反對 回復 2019-12-06
  • 3 回答
  • 0 關注
  • 965 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號