서버 이전후 로그인이 안됩니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

서버 이전후 로그인이 안됩니다. 정보

서버 이전후 로그인이 안됩니다.

첨부파일

common.lib.php (43.8K) 3회 다운로드 2009-05-18 15:04:46
login_check.php (4.3K) 4회 다운로드 2009-05-18 15:04:46
register_form.php (3.6K) 0회 다운로드 2009-05-18 15:04:46

본문

첫번째 이미지 서버 이전전의 db

두번째 이미지 서버 이전후의 db

개인 NAS 서버에서 사용하덧것을 데스크탑으로 옮겼습니다.

헌데 로그인이 안되네요??

계정이 없거나 비밀번호가 틀리다구 나와요...

http://opencode.co.kr/bbs/board.php?bo_table=gnu4_tips&wr_id=39

을 적용해도 안됩니다.

어떻게 해결해야하나요?

서버이전 전의 시스템 사양   리눅스

APACHE Version 2.0.58
PHP Version 5.2.6-pl7-gentoo
MYSQL Version 5.0.42 

 

서버이전후의 시스템 사양 윈도우

APMSETUP 6 마지막 업데이트 :: 2009년 04월 12일 을 설치함. (http://www.apmsetup.com/)

Apache 2.2.11 (openssl 0.9.8i)
PHP 5.2.9-2
MySQL 5.0.77

 

  • 복사

댓글 전체

기존서버에서 mysqldump.... 으로 백업해서 phpmyadmin 으로 복구했습니다. 복구하는데 시간은 얼마 안걸렸구요. phpmyadmin 에서 멤버 테이블을 원본과 비교해본결과 다른점이 없었습니다.
윈도우는 퍼미션 개념이 없다고들 하시던데요?

mysql 콘솔창에서 mysql 로그인후 해당 디렉트로의 권한을 변경하려면 어떻게 써야하나요?

 chmod 707 경로

에서 경로를 모르겠습니다...

C:\APM_Setup\htdocs  이 경로 아래에 data 폴더가 들어가 있습니다.
로그인이 안되는경우는
1. 디렉토리 권한문제
2. 도메인변경으로 인한 문제(쿠키)
3. 디비버전 문제

크게 3가지입니다

현재는 디렉토리 권한문제인거 같은데
그렇다면

위에 보니 phpmyadmin사용할줄 아는가 같네요

정확히 알고 있는 아이디와 패스워드 가 있다고 가정할때 예를 들어 (아이디:test, 비번: test)
phpmyadmin에서 g4_member 테이블에 아이디가 test인 레코드찾아서 수정화면들어갑니다
거기에 나와있는 mb_password값이 *F2A19180DBAA87532E9B7EE4DD9A2EDDC9CC6313 이런식일겁니다 이걸 복사해두고 따로 보관하세요

그다음에
mb_password 필드의 함수를 password선택하고 값을 test로 입력한후 저장하세요

그리고나서 위에 복사해둔 *F2A19180DBAA87532E9B7EE4DD9A2EDDC9CC6313 와 값이 다르다면
패스워드 암호체계가 다른겁니다
이런겨우 해결이 좀 복잡해지는데 우선여기까지 확인해보세요

값이 같다면 디비문제는 아니고 디렉토리 권한문제입니다

서버이전후 도메인이 변경되었다면
config.php 하단
$g4['cookie_domain'] = ""; 이부분이 문제일수도...
몇가지 확인절차.

1. 윈도우 이기때문에 디렉토리 권한문제는 없습니다. 무시하세요.
2. 패스워드가 인식이 잘못될 경우. 예로 예전에 41바이트인데 혹 다르게 인식될 가능성이 있으므로 다음을 테스트 해보세요. 파일을 그누보드 폴더에 하나 만들어 다음을 입력합니다.
<?
include_once('./_common.php');
echo sql_password('관리자 비밀번호를 써주세요');
?>
다음을 테스트했을 때 나오는 문자와 디비에 들어있는 문자값이 값은지 비교해보세요.
3. config.php에서 $g4['url']값이 맞게 설정되어 있는지 확인하세요.
http://opencode.co.kr/bbs/board.php?bo_table=gnu4_tips&wr_id=39

이 링크의 팁을 다 적용하고 로그인하니까
Fatal error: Call to undefined function sql_old_password() in C:\APM_Setup\htdocs\bbs\login_check.php on line 25


이란 에러가 떠요.../bbs/login_check.php의 15라인을 다음과 같이 수정 합니다. 이부분이거든요 ㅠㅠ
이제 답은 나왔네요. 새로 윈도우 서버를 하면서 mysql의 password값이 16바이트로 나온다는 것은 mysql 설정만 바꾸면 모든 게 해결될 겁니다. 팁적용한 거 다 취소하시고 다음만 수정하세요.

APM_setup을 쓰신다고 했으니까 APM_setup에 가면 my.ini파일을 열으셔서 old_passwords=1를 찾으신 후 지우거나 주석처리하세요.

그리고 아빠불당님 팁을 이용해서 수정한 것들이 있다면 다시 원상복구하셔서 41자리가 나오게 해야 합니다.
위와같이 했는데
<?
include_once('./_common.php');
echo sql_password('관리자 비밀번호를 써주세요');
?>

를 했을때 여전히 16자리로 나옵니다. 그리고 로그인도 여전히 실패구요. old_passwords=1를 삭제했습니다.

common.lib.php  를 검색해보면 기본적으로

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];
}


이 함수가 들어가있던데요...이것도 지워야하나요?
common.lib.php  를 검색해보면 기본적으로 들어있는 아래코드를 삭제하면

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];
}



아래와같은 에러가 뜹니다.
Fatal error: Call to undefined function sql_password() in C:\APM_Setup\htdocs\bbs\login_check.php on line 25

그코드를 보면 아래와 같습니다.

$mb = get_member($mb_id);

// 가입된 회원이 아니다. 패스워드가 틀리다. 라는 메세지를 따로 보여주지 않는 이유는
// 회원아이디를 입력해 보고 맞으면 또 패스워드를 입력해보는 경우를 방지하기 위해서입니다.
// 불법사용자의 경우 회원아이디가 틀린지, 패스워드가 틀린지를 알기까지는 많은 시간이 소요되기 때문입니다.
25행  if (!$mb[mb_id] || (sql_password($mb_password) != $mb[mb_password])) {
        alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
}

위코드를 주석처리하면 로그인시 없는 아이디로 아무렇게나 로그인하면 아이디가 없을경우에 경고메시지가 안뜨구요, 관리자 로그인하여 비밀번호 변경 시도를 하면

Fatal error: Call to undefined function sql_password() in C:\APM_Setup\htdocs\adm\member_form_update.php on line 101


이런 에러가 뜹니다. 101 행의 코드를 보면 아래와같습니다.

    if ($mb_password)
 101행      $sql_password = " , mb_password = '".sql_password($mb_password)."' ";
    else
        $sql_password = "";

    if ($passive_certify)
        $sql_certify = " , mb_email_certify = '$g4[time_ymdhis]' ";
    else
        $sql_certify = "";
phpmyadmin 으로 복구하지 마세요..저도 여러번 해봤는데 간혹 안되는 문제때문에 cmd로 접속해서 합니다.

컴서버에서 웹서버로는 잘되는데 간혹 거꾸로 하면 로그인에 문제가 많습니다.

apmsetup / 깨비등

바로 잘되는 홈도 있고 안되는 홈도 잇더라구요..
© SIRSOFT
현재 페이지 제일 처음으로