이것은 어떤 에러인가요?
본문
먼저, 게시글을 보고 변경을 했는데요.
이유는 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 수정한것을 원래 그누보드 원본으로 바꾸었습니다.
그랬더니 가입된 회원이 아니라면서 로그인이 안되네요.
왜 이런 문제가 발생을 하는거죠?