2016-08-21 4 views
-2

이 코드를 실행하면 잘못된 비밀번호가 나타납니다. 암호가 해시 된 암호와 일치하지 않는 이유는 무엇입니까?php에서 password_hash() 함수가 유효하지 않은 비밀번호를 얻음

<?php 
    $passwd = "imad"; 
    $hash = password_hash($passwd,PASSWORD_DEFAULT,['cost'=>10]); 
    echo "$passwd".' :'.$hash."<br/><br/>"; 


    if (password_verify($passwd, $hash,['cost'=>10])) { 
     echo 'Password is valid!'; 
    } else { 
     echo 'Invalid password.'; 
    } 
?> 
+0

해시 모양은 어떤 모양입니까? 그것은'$'을 포함합니까? – RamRaider

+3

if (password_verify ($ passwd, $ hash)) {//}'이면 충분합니다. 확인할 때 세 번째 매개 변수가 없습니다. – Ekin

+0

'error_reporting'이 나타나지 않았거나'display_errors'가 켜져 있지 않았거나 매뉴얼을 읽지 않았기 때문에. ['password_verify'] (http://php.net/password-verify)는 정확히 2 개의 인수를 취합니다. 당신은 3 개의 주장을 전달하고 있습니다. 즉, 함수가 반환되지 않고 대신 오류가 발생합니다. – Sherif

답변

0

password_verify 정확히 2 매개 변수를 기대하고있다.

그래서 당신은 할 필요가 :

if(password_verify($passwd, $hash)) { ... } 

그리고 위의 코드는 단축 할 수 있습니다 ternary operators를 사용하여

(password_verify($passwd, $hash)) ? : echo "Password is valid!" : echo "Password is invalid." 

.


또한 error_reporting도 일반적으로 개발할 때 좋습니다.

은 그래서 넣어 :

ini_set("display_errors", "1"); 
error_reporting(E_ALL); 

그 파일의 상단에.

그리고 제작 단계로 옮길 때 제거하십시오.

+0

Tnx Sir, 내 하루를 만들어 : d –