테스트 사이트 - 개발 중인 베타 버전입니다

이것은 어떤 에러인가요?

테돌아이 8년 전 조회 2,479

http://sir.kr/qa/121292">http://sir.kr/qa/121292 

먼저, 게시글을 보고 변경을 했는데요.

이유는 mysql 버전에 따라 암호코드가 다르기 때문에 동일하게 하려고 했는데요.

증상, 일반회원은 아무런 변화가 없이 로그인이 되는데 최고관리자만 아래와 같이 에러가 나옵니다.

Fatal error: Call to undefined function crypt_xdigit() in 생략/http/gnu4/bbs/login_check.php on line 29 

 

글고

mysql 버전에 따라 암호코드가 다른경우 로그인 해결법

common.lib.php

$row = sql_fetch(" select old_password('$value') as pass "); 

이것으로 로그인 문제를 해결을 하잖아요?

 

그리고 16바이트를 41바이트로 변경을 하거 위해

bbs/login_check.php

//회원로그인에 관련된 수정내용

function sql_password2($value)

{

    // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes

    // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes

    $row = sql_fetch(" select old_password('$value') as pass ");

    return $row['pass'];

}

// 비밀번호 비교

function check_old_password($pass, $hash)

{

$password = sql_password2($pass);

    return ($password === $hash);

}

if (!$mb['mb_id'] || (!check_password($mb_password, $mb['mb_password']) && !check_old_password($mb_password, $mb['mb_password']))) {

    alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');

}

if(check_old_password($mb_password, $mb['mb_password'])) {

$sql= " update {$g5['member_table']} set mb_password = password('$mb_password') where mb_id = '{$mb['mb_id']}' ";

    sql_query($sql);

 

}

이렇게 하여 현재 암호화에 맞는것으로 변경을 하잖아요.

그런데 모두 41바이트로 변경이 된 것을 확인하고 common.lib.php 수정한것을 원래 그누보드 원본으로 바꾸었습니다.

그랬더니 가입된 회원이 아니라면서 로그인이 안되네요.

왜 이런 문제가 발생을 하는거죠?

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

플라이
8년 전

crypt_xdigit() 이 함수가 없어서 그렇습니다. 그 함수를 확인해 보셔야 할듯 합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

테돌아이
8년 전
확인은 어떻게 해야하나요?
네이버 지식인에 검색을 해도 보이지가 않네요.
플라이
8년 전
이 함수는 일반적인 함수가 아니라 그전에 작업하신분이 만드신 함수 같은데요 이 부분은 어떤 의도로 사용된건지 소스를 확인해 보셔야 하는 부분이라서요
테돌아이
8년 전
위 링크 먼지손의 답변 더보기를 클릭하면 있더라고요.
함수정의는 어디에 했는지 나와있지 않고요. ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인