이것은 어떤 에러인가요?

이것은 어떤 에러인가요?

QA

이것은 어떤 에러인가요?

답변 1

본문

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

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

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 6
© SIRSOFT
현재 페이지 제일 처음으로