2014-09-03 1 views
0

저는 PHP에 비교적 익숙하지 않습니다. 누군가 제가 복어와 지하실을 이해하는 데 도움이되기를 바랍니다. 암호화 된 비밀번호를 데이터베이스에 삽입하려고했지만 사용자 인증에 문제가 있습니다. 나는 다른 게시물뿐만 아니라 블로그/자습서를보고 있었고 그 중 어떤 것도 저장된 암호를 인증하지 않는 것 같습니다. this blogthis post 반 도움이 발견되었지만 암호가 저장되면 인증을 알아낼 수 없습니다. 올바른 암호를저장된 해시로 사용자 인증 - Crypt and Blowfish

function user_authenticate($username, $password_input){ 
    include '../connection/dbconnect.php'; 
    $errors = ""; 
    if ($user_exists->num_rows < 1 || $user_exists->num_rows > 1){ 
     //other checks - username, activated status, etc. 
    } else{ 
     $user_match = $connect->query("SELECT `user_id` FROM `users` WHERE `user_name` = '$username' LIMIT 1"); 
     $user_id = $user_match->fetch_assoc(); 
     $get_pw = $connect->query("SELECT `pass_w` FROM `users` WHERE `user_name` = '$username'"); 
     $pw_match = $get_pw->fetch_assoc(); 
     if ($user_match->num_rows != 1 || crypt($password_input, $pw_match['pass_w']) != $pw_match['pass_w']){ 
      $errors = 'That username/password combination is incorrect'; 
      return $errors; 
     } else{ 
      return true; 
     } 
    } 

타이핑이 저를 준다 "

로그인이에서 다음
function crypt_pass($pass){ 
    if(defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH){ 
     $salt = '$2y$11$'.substr(md5(uniqid(rand(), true)), 0, 22); 
     return crypt($pass, $salt); 
    } 
} 

이 기능은 다음과 같습니다 등록에서 는 사용자의 암호 입력은 다음 users 테이블에 저장이 기능을 사용하여 암호화됩니다 해당 사용자 이름/암호 조합이 잘못되었습니다. " 나는 내가 읽은 글의 지시대로 crypt()을 사용하고 있다고 생각한다. 어떤 도움을 주셔서 감사합니다, 감사합니다! 이 (당신이 password_hash 제공) 등) (복어 너 한테를 사용하는 방법을 password_verify 것 https://github.com/ircmaxell/password_compat 및 php5.5

표준으로 구현됩니다 :

답변

0

는 IRCMaxell의 비밀번호 (호환) 라이브러리를 사용하는 것을 고려