회원정보 찾기 수정 하는데 DB에 정보가 안들어갑니다 ㅠㅠ
본문
회원정보 찾기 방식을 아이디, 비밀번호 찾기를 분리해서 처리하려고 하는데 아이디 찾기 부분은 처리했습니다.
이름이랑 이메일 정보 받아서 이메일로 아이디를 쏴주는 방식으로 처리했는데
비밀번호 찾기 부분에서 일단 이메일은 날라가는데 DB 에 임시비밀번호가 저장되지 않습니다.
$sql = " UPDATE {$g5['member_table']} SET mb_lost_certify = '{$mb_nonce} {$mb_lost_certify}' WHERE mb_id = '{$mb['mb_id']}'";
$sql = " UPDATE {$g5[member_table]} SET mb_lost_certify = '{$mb_nonce} {$mb_lost_certify}' WHERE mb_id = '아이디";
이렇게 입력하면 DB 에 들어가는데 id 를 직접 입력하면 들어가는데..
{$mb_['mb_id']} 이 방식이나 {$mb[mb_id]} 이 방식 2개다 적용해봤는데 안들어갑니다..
해당 구문을 alert으로 찍어봤는데 제데로 나오는거 확인했고 alert 창에 뜬 정보를 직접 db에 입력해봐도 문제가 없는데 php 에서 update 함수가 적용되지않는거같아요.
전체소스 입니다.
<?php
include_once('./_common.php');
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
include_once(G5_LIB_PATH.'/mailer.lib.php');
if ($is_member) {
alert_close('이미 로그인중입니다.', G5_URL);
}
$id = trim($_POST['mb_id']);
$email = trim($_POST['mb_email']);
if (!$id)
alert('아이디 오류입니다.', G5_URL);
if (!$email)
alert('메일주소 오류입니다.', G5_URL);
$sql = " select mb_no, mb_id, mb_name, mb_nick, mb_email, mb_datetime from {$g5['member_table']} where mb_email = '$email' and mb_id = '$id'";
$mb = sql_fetch($sql);
if (!$mb['mb_id'])
alert('존재하지 않는 회원입니다.');
else if (is_admin($mb['mb_id']))
alert('관리자 아이디는 접근 불가합니다.');
// 임시비밀번호 발급
$change_password = rand(100000, 999999);
$mb_lost_certify = get_encrypt_string($change_password);
// 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용
$mb_nonce = md5(pack('V*', rand(), rand(), rand(), rand()));
// 임시비밀번호와 난수를 mb_lost_certify 필드에 저장
$sql = " UPDATE {$g5[member_table]} SET mb_lost_certify = '{$mb_nonce} {$mb_lost_certify}' WHERE mb_id = '{$mb['mb_id']}'";
sql_query($sql);
// 인증 링크 생성
$href = G5_BBS_URL.'/password_lost_certify.php?mb_no='.$mb['mb_no'].'&mb_nonce='.$mb_nonce;
$subject = "[".$config['cf_title']."] 요청하신 회원정보 찾기 안내 메일입니다.";
$content = "";
$content .= '<div style="margin:30px auto;width:600px;border:10px solid #f7f7f7">';
$content .= '<div style="border:1px solid #dedede">';
$content .= '<h1 style="padding:30px 30px 0;background:#f7f7f7;color:#555;font-size:1.4em">';
$content .= '회원정보 찾기 안내';
$content .= '</h1>';
$content .= '<span style="display:block;padding:10px 30px 30px;background:#f7f7f7;text-align:right">';
$content .= '<a href="'.G5_URL.'" target="_blank">'.$config['cf_title'].'</a>';
$content .= '</span>';
$content .= '<p style="margin:20px 0 0;padding:30px 30px 30px;border-bottom:1px solid #eee;line-height:1.7em">';
$content .= addslashes($mb['mb_name'])." (".addslashes($mb['mb_nick']).")"." 회원님은 ".G5_TIME_YMDHIS." 에 회원정보 찾기 요청을 하셨습니다.<br>";
$content .= '저희 사이트는 관리자라도 회원님의 비밀번호를 알 수 없기 때문에, 비밀번호를 알려드리는 대신 새로운 비밀번호를 생성하여 안내 해드리고 있습니다.<br>';
$content .= '아래에서 변경될 비밀번호를 확인하신 후, <span style="color:#ff3061"><strong>비밀번호 변경</strong> 링크를 클릭 하십시오.</span><br>';
$content .= '비밀번호가 변경되었다는 인증 메세지가 출력되면, 홈페이지에서 회원아이디와 변경된 비밀번호를 입력하시고 로그인 하십시오.<br>';
$content .= '로그인 후에는 정보수정 메뉴에서 새로운 비밀번호로 변경해 주십시오.';
$content .= '</p>';
$content .= '<p style="margin:0;padding:30px 30px 30px;border-bottom:1px solid #eee;line-height:1.7em">';
$content .= '<span style="display:inline-block;width:100px">회원아이디</span> '.$mb['mb_id'].'<br>';
$content .= '<span style="display:inline-block;width:100px">변경될 비밀번호</span> <strong style="color:#ff3061">'.$change_password.'</strong>';
$content .= '</p>';
$content .= '<a href="'.$href.'" target="_blank" style="display:block;padding:30px 0;background:#484848;color:#fff;text-decoration:none;text-align:center">비밀번호 변경</a>';
$content .= '</div>';
$content .= '</div>';
mailer($config['cf_admin_email_name'], $config['cf_admin_email'], $mb['mb_email'], $subject, $content, 1);
alert($email.' 메일로 비밀번호를 인증할 수 있는 메일이 발송 되었습니다.\\n\\n메일을 확인하여 주십시오.', G5_URL.'/bbs/login.php');
?>
답변 2
여기서는 이메일이 날아가면 해당 인증 링크를 클릭해야
/bbs/password_lost_certify.php 에서 임시비밀번호를 저장합니다.
즉 해당소스는 임시 비밀번호를 저장하지 않고 이메일 인증 링크만 제공합니다.
비밀번호 찾기라면, 로그인하기 전인 것 같은데..
로그인 전에 {$mb['mb_id']} 값이 있나요?