패스워드

패스워드

QA

패스워드

본문

그누4에서 db 백업해와 그누5.4에 붙여 넣고 g4_import.php 해서 잘 사용하고 있습니다.

회원들을 정상적으로 옮겨와 로그인도 잘되는데 옮겨온 회원들은 패스워드가 변경이 안되네요.

 

db를 보니 그누4에서 옮겨온 회원 패스는 *221342342342 이렇게 시작하고 그누5.4에서 회원 가입한 회원은 sha256으로 시작하더군요.

 

어떻하면 그누4의 패스를 그누5.4의 패스처럼 변경 할 수 있을까요?

아니면, 변경하지 않더라도 그누4에서 옮겨온 회원들의 패스를 변경할 수 있게 가능할까요?

이 질문에 댓글 쓰기 :

답변 3

알려주신 사이트 1번만 적용하니 되네요.

 

1. 그누보드5 / lib / common.lib.php  155~1560줄

function sql_password($value)
{
    // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
    // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
    $row = sql_fetch(" select password('$value') as pass ");

    return $row['pass'];
}

를 아래와 같이 내용 추가

// mysql 5.7 미만일때
/*function sql_old_password($value)
{
    $row = sql_fetch(" select old_password('$value') as pass ");
    return $row['pass'];
}*/
// mysql 5.7 이상일때
function sql_old_password($value) {
    if ($value == '')
        return '';
 
    $nr = 1345345333;
    $add = 7;
    $nr2 = 0x12345671;
    foreach(str_split($value) as $c) {
        if ($c == ' ' or $c == "\t")
            continue;
        $tmp = ord($c);
        $nr ^= ((($nr & 63) + $add) * $tmp) + (($nr << 8) & 0xFFFFFFFF);
        $nr2 += (($nr2 << 8) & 0xFFFFFFFF) ^ $nr;
        $add += $tmp;
    }
 
    if ($nr2 > PHP_INT_MAX)
        $nr2 += PHP_INT_MAX + 1;
 
    $bit = (1 << 31) -1;
 
    return sprintf("%08lx%08lx", $nr & $bit, $nr2 & $bit);
}

function sql_password($value)
{
    // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
    // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
    $row = sql_fetch(" select password('$value') as pass ");
    return $row[pass];
}

답변을 작성하시기 전에 로그인 해주세요.
전체 59,285
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT