비번찾기해서 찾은 비번으로 로그인이 안됩니다 ㅡㅡ 정보
비번찾기해서 찾은 비번으로 로그인이 안됩니다 ㅡㅡ본문
비번찾기방식은 그누처럼 새창띄우는것 대신에 해당페이지에 나오게 했구요. 그것빼고는 프로그램상 수정한게 없는데 3단계에서 아이디랑 임시비번이 발급되서 로그인을 하면 "존재하지 않는 회원입니다" 라고 오류창이 뜹니다. 임시비번 계속 바뀌는대로 반복적으로 해봐도 마찬가지구요. 한번 살펴봐 주시면 고맙겠습니다.
bbs/password_forget3.php 내용
<?
include_once("./_common.php");
include_once("./_common.php");
$sql = " select mb_id, mb_nick, mb_password_a, mb_email from $g4[member_table] where mb_id = '$_POST[pass_mb_id]' ";
$mb = sql_fetch($sql);
if (!$mb[mb_id])
alert("존재하지 않는 회원입니다.");
else if ($mb_password_a != $mb[mb_password_a])
alert("패스워드 분실 시 답변이 틀립니다.");
else if (is_admin($mb[mb_id]))
alert("관리자 아이디는 접근 불가합니다.");
$mb = sql_fetch($sql);
if (!$mb[mb_id])
alert("존재하지 않는 회원입니다.");
else if ($mb_password_a != $mb[mb_password_a])
alert("패스워드 분실 시 답변이 틀립니다.");
else if (is_admin($mb[mb_id]))
alert("관리자 아이디는 접근 불가합니다.");
$g4[title] = "패스워드 찾기 3단계";
include_once("$g4[path]/head.php");
include_once("$g4[path]/head.php");
// 난수 발생
list($usec, $sec) = explode(" ", microtime());
$seed = (float)$sec + ((float)$usec * 100000);
srand($seed);
$randval = rand(4, 6);
list($usec, $sec) = explode(" ", microtime());
$seed = (float)$sec + ((float)$usec * 100000);
srand($seed);
$randval = rand(4, 6);
$change_password = substr(md5(get_microtime()), 0, $randval);
$sql = " update $g4[member_table]
set mb_password = '".sql_password($change_password)."'
where mb_id = '$mb[mb_id]' ";
sql_query($sql);
$sql = " update $g4[member_table]
set mb_password = '".sql_password($change_password)."'
where mb_id = '$mb[mb_id]' ";
sql_query($sql);
$member_skin_path = "$g4[path]/skin/member/$config[cf_member_skin]";
include_once("$member_skin_path/password_forget3.skin.php");
include_once("$member_skin_path/password_forget3.skin.php");
include_once("$g4[path]/tail.php");
?>
?>
$member_skin_path/password_forget3.skin.php 내용
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td background="<?=$g4[path]?>/image/sub_topbar_g_02.gif" height="48">
<table width="98%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<div align="right" class="review">HOME > MEMBER SERVICE
> FIND ID & PASSWORD</div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="25"> </td>
</tr>
<tr>
<td background="<?=$g4[path]?>/image/back_findpage02_3.gif" height="250" valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="160"> </td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="37%"> </td>
<td width="53%">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width=100>
<table>
<tr>
<td><b> <?=$mb[mb_id]?></b></td></tr>
<tr><td><b> <?=$change_password?></b></td></tr>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td background="<?=$g4[path]?>/image/sub_topbar_g_02.gif" height="48">
<table width="98%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<div align="right" class="review">HOME > MEMBER SERVICE
> FIND ID & PASSWORD</div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="25"> </td>
</tr>
<tr>
<td background="<?=$g4[path]?>/image/back_findpage02_3.gif" height="250" valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="160"> </td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="37%"> </td>
<td width="53%">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width=100>
<table>
<tr>
<td><b> <?=$mb[mb_id]?></b></td></tr>
<tr><td><b> <?=$change_password?></b></td></tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
bbs/password_forget.php 내용
<?
include_once("./_common.php");
include_once("./_common.php");
if ($member[mb_id])
{
echo <<<HEREDOC
<script language="javascript">
alert("이미 로그인중입니다.");
window.close();
opener.document.location.reload();
</script>
HEREDOC;
exit;
}
{
echo <<<HEREDOC
<script language="javascript">
alert("이미 로그인중입니다.");
window.close();
opener.document.location.reload();
</script>
HEREDOC;
exit;
}
$g4[title] = "회원아이디/패스워드 찾기";
include_once("$g4[path]/head.php");
include_once("$g4[path]/head.php");
$member_skin_path = "$g4[path]/skin/member/$config[cf_member_skin]";
include_once("$member_skin_path/password_forget.skin.php");
include_once("$member_skin_path/password_forget.skin.php");
include_once("$g4[path]/tail.php");
?>
?>
bbs/password_forget2.php 내용
<?
include_once("./_common.php");
include_once("./_common.php");
if ($_POST[pass_mb_id])
$sql = " select mb_id, mb_password_q from $g4[member_table] where mb_id = '$_POST[pass_mb_id]' ";
else if ($_POST[mb_name] && $_POST[mb_jumin])
$sql = " select mb_id, mb_password_q from $g4[member_table] where mb_name = '$_POST[mb_name]' and mb_jumin = '".sql_password($_POST[mb_jumin])."' ";
else if ($_POST[mb_name] && $_POST[mb_email])
$sql = " select mb_id, mb_password_q from $g4[member_table] where mb_name = '$_POST[mb_name]' and mb_email = '$_POST[mb_email]' ";
else
alert("올바른 방법으로 접근하여 주십시오.");
$sql = " select mb_id, mb_password_q from $g4[member_table] where mb_id = '$_POST[pass_mb_id]' ";
else if ($_POST[mb_name] && $_POST[mb_jumin])
$sql = " select mb_id, mb_password_q from $g4[member_table] where mb_name = '$_POST[mb_name]' and mb_jumin = '".sql_password($_POST[mb_jumin])."' ";
else if ($_POST[mb_name] && $_POST[mb_email])
$sql = " select mb_id, mb_password_q from $g4[member_table] where mb_name = '$_POST[mb_name]' and mb_email = '$_POST[mb_email]' ";
else
alert("올바른 방법으로 접근하여 주십시오.");
$mb = sql_fetch($sql);
if (!$mb[mb_id])
alert("입력하신 내용으로는 회원정보가 존재하지 않습니다.");
else if (is_admin($mb[mb_id]))
alert("관리자 아이디는 접근 불가합니다.");
if (!$mb[mb_id])
alert("입력하신 내용으로는 회원정보가 존재하지 않습니다.");
else if (is_admin($mb[mb_id]))
alert("관리자 아이디는 접근 불가합니다.");
$g4[title] = "패스워드 찾기 2단계";
include_once("$g4[path]/head.php");
include_once("$g4[path]/head.php");
$member_skin_path = "$g4[path]/skin/member/$config[cf_member_skin]";
include_once("$member_skin_path/password_forget2.skin.php");
include_once("$member_skin_path/password_forget2.skin.php");
include_once("$g4[path]/tail.php");
?>
?>
bbs/login_check.php 내용
<?
include_once("./_common.php");
include_once("./_common.php");
$mb_id = $_POST[mb_id];
$mb_password = $_POST[mb_password];
$mb_password = $_POST[mb_password];
if (!trim($mb_id) || !trim($mb_password))
alert("회원아이디나 패스워드가 공백이면 안됩니다.");
alert("회원아이디나 패스워드가 공백이면 안됩니다.");
$mb = get_member($mb_id);
// 가입된 회원이 아니다. 패스워드가 틀리다. 라는 메세지를 따로 보여주지 않는 이유는
// 회원아이디를 입력해 보고 맞으면 또 패스워드를 입력해보는 경우를 방지하기 위해서입니다.
// 불법사용자의 경우 회원아이디가 틀린지, 패스워드가 틀린지를 알기까지는 많은 시간이 소요되기 때문입니다.
if (!$mb[mb_id] || (sql_password($mb_password) != $mb[mb_password]))
alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
// 회원아이디를 입력해 보고 맞으면 또 패스워드를 입력해보는 경우를 방지하기 위해서입니다.
// 불법사용자의 경우 회원아이디가 틀린지, 패스워드가 틀린지를 알기까지는 많은 시간이 소요되기 때문입니다.
if (!$mb[mb_id] || (sql_password($mb_password) != $mb[mb_password]))
alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
// 차단된 아이디인가?
if ($mb[mb_intercept_date] && $mb[mb_intercept_date] <= date("Ymd", $g4[server_time])) {
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb[mb_intercept_date]);
alert("회원님의 아이디는 접근이 금지되어 있습니다.\\n\\n처리일 : $date");
}
if ($mb[mb_intercept_date] && $mb[mb_intercept_date] <= date("Ymd", $g4[server_time])) {
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb[mb_intercept_date]);
alert("회원님의 아이디는 접근이 금지되어 있습니다.\\n\\n처리일 : $date");
}
// 탈퇴한 아이디인가?
if ($mb[mb_leave_date] && $mb[mb_leave_date] <= date("Ymd", $g4[server_time])) {
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb[mb_leave_date]);
alert("탈퇴한 아이디이므로 접근하실 수 없습니다.\\n\\n탈퇴일 : $date");
}
if ($mb[mb_leave_date] && $mb[mb_leave_date] <= date("Ymd", $g4[server_time])) {
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb[mb_leave_date]);
alert("탈퇴한 아이디이므로 접근하실 수 없습니다.\\n\\n탈퇴일 : $date");
}
if ($config[cf_use_email_certify] && !preg_match("/[1-9]/", $mb[mb_email_certify]))
alert("메일인증을 받으셔야 로그인 하실 수 있습니다.\\n\\n회원님의 메일주소는 $mb[mb_email] 입니다.");
alert("메일인증을 받으셔야 로그인 하실 수 있습니다.\\n\\n회원님의 메일주소는 $mb[mb_email] 입니다.");
$member_skin_path = "$g4[path]/skin/member/$config[cf_member_skin]";
@include_once("$member_skin_path/login_check.skin.php");
@include_once("$member_skin_path/login_check.skin.php");
// 회원아이디 세션 생성
set_session('ss_mb_id', $mb[mb_id]);
set_session('ss_mb_id', $mb[mb_id]);
// 3.26
// 아이디 쿠키에 한달간 저장
if ($auto_login) {
// 3.27
// 자동로그인 ---------------------------
// 쿠키 한달간 저장
$key = md5($_SERVER[SERVER_ADDR] . $_SERVER[REMOTE_ADDR] . $_SERVER[HTTP_USER_AGENT] . $mb[mb_password]);
set_cookie('ck_mb_id', $mb[mb_id], 86400 * 31);
set_cookie('ck_auto', $key, 86400 * 31);
// 자동로그인 end ---------------------------
} else {
set_cookie('ck_mb_id', '', 0);
set_cookie('ck_auto', '', 0);
}
// 아이디 쿠키에 한달간 저장
if ($auto_login) {
// 3.27
// 자동로그인 ---------------------------
// 쿠키 한달간 저장
$key = md5($_SERVER[SERVER_ADDR] . $_SERVER[REMOTE_ADDR] . $_SERVER[HTTP_USER_AGENT] . $mb[mb_password]);
set_cookie('ck_mb_id', $mb[mb_id], 86400 * 31);
set_cookie('ck_auto', $key, 86400 * 31);
// 자동로그인 end ---------------------------
} else {
set_cookie('ck_mb_id', '', 0);
set_cookie('ck_auto', '', 0);
}
if ($url)
{
$link = urldecode($url);
// 2003-06-14 추가 (다른 변수들을 넘겨주기 위함)
if (preg_match("/\?/", $link))
$split= "&";
else
$split= "?";
// $_POST 배열변수에서 아래의 이름을 가지지 않은 것만 넘김
foreach($_POST as $key=>$value)
{
if ($key != "mb_id" && $key != "mb_password" && $key != "x" && $key != "y" && $key != "url")
{
$link .= "$split$key=$value";
$split = "&";
}
}
}
else
$link = $g4[path];
foreach($_POST as $key=>$value)
{
if ($key != "mb_id" && $key != "mb_password" && $key != "x" && $key != "y" && $key != "url")
{
$link .= "$split$key=$value";
$split = "&";
}
}
}
else
$link = $g4[path];
goto_url($link);
?>
?>
추신: "존재하지 않는 회원입니다." 라는 메세지가 나온후 새로고침을 한번 해주면 정상적으로 로그인이 되어 있습니다. 새로발급된 아이디와 비번은 그대로 노출된채요.
댓글 전체
새창띄우기시에 사용되는 $_POST[pass_mb_id] 변수가 제대로 인식되지 않아서 입니다.
방법이야 많겠지만..
쉬운 방법으로는
bbs/password_forget3.php 내용의 sql 구문을 수정해보심이 어떨지요;;
password_forget2.skin.php 파일의 폼구문 변수
<input type=hidden name=pass_mb_id value='<?=$mb[mb_id]?>'>
와 같이 pass_mb_id 와 같이 넘어가니깐요;;
bbs/password_forget3.php
<?
include_once("./_common.php");
$sql = " select mb_id, mb_nick, mb_password_a, mb_email from $g4[member_table] where mb_id = '$pass_mb_id' ";
////////////////////////////
제가 적용해보지 않아서 정확한 답변이 아닐수 있습니다. 다른 분들의 의견을 참조해보시구.. 천천히 소스를 응용해보시면 해결될거예요;;
방법이야 많겠지만..
쉬운 방법으로는
bbs/password_forget3.php 내용의 sql 구문을 수정해보심이 어떨지요;;
password_forget2.skin.php 파일의 폼구문 변수
<input type=hidden name=pass_mb_id value='<?=$mb[mb_id]?>'>
와 같이 pass_mb_id 와 같이 넘어가니깐요;;
bbs/password_forget3.php
<?
include_once("./_common.php");
$sql = " select mb_id, mb_nick, mb_password_a, mb_email from $g4[member_table] where mb_id = '$pass_mb_id' ";
////////////////////////////
제가 적용해보지 않아서 정확한 답변이 아닐수 있습니다. 다른 분들의 의견을 참조해보시구.. 천천히 소스를 응용해보시면 해결될거예요;;
수산나님 답변 감사합니다만.. ^^; 역시 잘 안되네요.
참고로.. 찾은 아이디와 비번으로 로그인을 하면 존재하지 않는 회원입니다 란 메세지가 나온후, 새로고침을 한번 해주면 정상적으로 로그인이 되어 있네요. 그런데 왜 그런 메세지가 출력이 되는지 모르겠습니당 ㅡㅡ;
참고로.. 찾은 아이디와 비번으로 로그인을 하면 존재하지 않는 회원입니다 란 메세지가 나온후, 새로고침을 한번 해주면 정상적으로 로그인이 되어 있네요. 그런데 왜 그런 메세지가 출력이 되는지 모르겠습니당 ㅡㅡ;
login_check.php 에서는 '존재하지 않는 회원입니다' 란 에러메시지가 없습니다.
다음처럼, 나오게 되어있군요.
alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
프로그램 수정하시면서, action URL이 forget 화일쪽으로 잘못 된 건 아닐지...
다음처럼, 나오게 되어있군요.
alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
프로그램 수정하시면서, action URL이 forget 화일쪽으로 잘못 된 건 아닐지...
제 생각에 password_forget3.php 페이지랑 로그인창이랑 같은 페이지에 있어서 찾은 아이디와 비번으로 로그인창에 입력하고 로그인버튼클릭하면 password_forget3.php이 한번더 로딩되면서 이런현상이 나지않나 생각됩니다만 해결책을 못찾겠네요. 전 단지 비번찾기페이지를 팝업으로 하기 싫어서 이렇게 한것 뿐인데.. 쩝..