我只是試圖從.txt文件中提取散列數據,使用與password_verify()用戶的. 從' 文件中提取的散列輸入和用戶輸入的散列輸入似乎與我從測試中得到的輸出相匹配,但仍然是結果。verifyhashed passwordinput.txtverificationfalsehashed password但是,當我使用 echo 語句將用戶顯示的輸出復制并粘貼到哈希變量$password_test中時,驗證工作并導致true.當散列密碼直接從.txt文件中提取到程序中時,顯然會有所不同問題是。我覺得.txt文件導致password_verify()功能不strings一樣的特殊格式可能與特殊格式有關,但我離題了。任何關于可能發生的事情的信息都會很好。$file = 'users.txt'; // get the form variable $userId = $_POST['user_signin_Id']; //$hashedPassword = password_hash($password, PASSWORD_BCRYPT); $file_lines = file_get_contents($file); list($name_fromFile, $email_fromFile, $userID_fromFile, $password_fromFile) = explode(':', $file_lines); $trimmed_hashed_password_fromFile = rtrim($password_fromFile, ":"); $password_test = '$2y$10$aQDNx09.73PjLmY2YgK/NuvInQPk.185vC4exOlZYgA2LiBchK6Xy'; if(trim($userID_fromFile) == $userId && password_verify(trim($_POST['user_signin_password']), $trimmed_hashed_password_fromFile)){ echo 'Logged in'. "<br/>"; echo $trimmed_hashed_password_fromFile . "<br/>"; echo $password_test; }// end if else{ //echo crypt($password, $hashedPassword) . "<br/>"; //cryptPassword($password, $password_fromFile) . "<br/>"; //echo $hashedPassword; echo $trimmed_hashed_password_fromFile . "<br/>"; echo $password_test . "<br/>"; echo gettype($trimmed_hashed_password_fromFile) . "<br/>"; echo gettype($password_test) . "<br/>"; }我沒有收到任何錯誤消息向你們展示。PASSWORD_BCRYPT在使用函數中的參數對用戶輸入的密碼進行哈希處理后,我希望結果是真實的,并且從文件password_hash()中將PASSWORD_BCRYPT加密密碼拉入應用程序.txt。
2 回答

慕后森
TA貢獻1802條經驗 獲得超5個贊
為了解決上圖中發現的問題,我更改了以下行:
$trimmed_hashed_password_fromFile = rtrim($password_fromFile, ":");
到:
$trimmed_hashed_password_fromFile = ltrim($password_fromFile);
刪除輸出開頭隱藏的左側空格,而不是嘗試從輸出中刪除任何冒號(因為它們不是問題)

一只萌萌小番薯
TA貢獻1795條經驗 獲得超7個贊
使用 var_dump() 函數,我想我找到了罪魁禍首。來自“.txt”文件的散列密碼輸入的開頭有一個空格,直到使用 var_dump() 才成為父級。
- 2 回答
- 0 關注
- 155 瀏覽
添加回答
舉報
0/150
提交
取消