본문 바로가기
Project/APM웹서버

패스워드 해쉬처리( password_hash )

by Albin 2021. 10. 26.

캐이스별 인증 방식 중에 해쉬처리된 비밀번호가 필요해 회원가입 페이지를 만들어 보았다.

 

서버와 디비 연결은 이전 글에도 설명이 되어 있으니 넘어가고, 필요했던 코드만 작성해 본다.

$hashPw = password_hash($userPw, PASSWORD_DEFAULT);

 

password_hash는 PHP버전 5.5부터 사용 가능한 API이며, 뒤에 PASSWORD_DEFAULT 부분은 bcrypt 알고리즘을 사용하며, 여러 옵션들을 통해 다른 알고리즘을 사용할 수 있다.

 

$mSql = "select id from member where id = '".$userId."';";
$result = mysqli_query( $mysqli , $mSql );

while ($rows = mysqli_fetch_array($result)) {
    $existId = $rows['id'];
}

if (!is_null($existId)){
        #아이디가 존재
    echo "<script>alert('중복되는 아이디가 있습니다.'); history.back();</script>";
    session_destroy();
    exit;
}else{
        #아이디 없음 회원가입시작 
    $mSql = "insert into member( id, pw ) values( '".$userId."', '".$hashPw."');";
    $result = mysqli_query( $mysqli , $mSql );
    if(!$result){
        #실패
        echo "<script>alert('실패 입니다.');history.back();</script>";
        session_destroy();
        exit;
    }

}

유저 아이디가 있으면 돌려보내고, 없을시 회원 가입을 시작하는 코드

 

 

마지막으로..

3시간정도 오류가 나서 계속 코드 디버깅했는데..

문제는 DB 컬럼 VARCHAR(20)으로 생성해서였다.

생각보다 길이가 긴 해쉬..

시원하게 100까지 길이를 늘려주고 성공!

 

 

 

 

참조

https://www.codingfactory.net/11707

 

PHP / 함수 / password_hash() / 비밀번호 암호화하는 함수

개요 password_hash()는 비밀번호를 암호화해주는 함수입니다. 입력한 값이 암호화된 비밀번호와 맞는지 확인하는 것은 password_verify() 함수로 합니다. 문법 password_hash ( string $password , int $algo [, array $o

www.codingfactory.net