정보찾기 입니다. (재업)
본문
../skin/member/basic/password_lost.php 의 수정된 코드입니다(아래)
이메일 인증함수를 사용 안하고, xml 로 POST 요청후 Response 된 이메일과 사용자가 입력한 이메일 값이 같을 경우만 이메일주소로 비밀번호를 변경할 수 있는 이메일을 보내게 하려합니다.
../skin/member/basic/password_lost2.php 의 코드입니다(아래)
위 코드느 DB 에 이메일이 있을 경우 비교해서 참이면 입력한 메일로 비번 임시번호를 보내는 건데,
보안사정상 DB 에 이메일과 휴대전화 를 제거한 상태입니다.
그러나 회원들의 개인정보는 보안 서버에 있는 xml 로 Response 해서 사용자가 입력한 room_no 와 user_name 그리고 이메일 주소를 입력해서 POST 방식인데, Request 를 보시면 아시겠지만,
room_no 와 user_name 을 request 로 보내면 Response 데이터는 이메일주소가 돌아 오는 방식입니다.
돌아온 이메일과 자신이 입력한 이메일이 같으면 그누보드에서 작동하는 이메일로보내는 비밀번호찾기
로직이 작동하게 하고 싶습니다.
password_lost2.php 의 코드를 대처해서 작동해야 하는데 아무리 뒤져보고 질문을 했지만 감은 오는데 실행 능력이 모자라 이렇게 다시 한 번 질문을 올립니다.
여기저기 물어 보고 ChatGPT BingAI 에게도 질문 하고 해도 전혀...ㅡㅡ;
아래는 현재 까지 수집한 코드입니다.
테스트 결과 '입력하신 정보가 올바르지 않습니다.' 오류납니다.
정확히 받아서 대입해 주었는데 오류 나네요..
혹시 이부분 아시는 분들은 조언을 부탁 드립니다.^^
!-->
<form name="fpasswordlost" action="<?php echo $action_url ?>" onsubmit="return fpasswordlost_submit(this);" method="post" autocomplete="off">
////////////////////////추가된 코드////////////////////////
<div class="px-3 px-sm-0 py-3">
<p> - 계약시 방번호 와 계약자 성명을 같이 입력하시기 바랍니다.<br>
- 회원가입 시 등록하신 이메일 주소를 입력해 주세요.<br>
해당 <strong>이메일</strong>로 <strong>아이디</strong>와 <strong>비밀번호</strong> 정보를 보내드립니다.</strong>
</p>
<label class="sr-only" for="mb_email">이메일<strong class="sr-only"> 필수</strong></label>
<div class="input-group my-3">
<input type="text" name="room_no" id="room_no" required class="form-control required frm_input full_input" size="30" placeholder="방번호(Room No)">
</div>
<div class="input-group my-3">
<input type="text" name="user_name" id="user_name" required class="form-control required frm_input full_input" size="30" placeholder="계약자명(User Name)">
</div>
////////////////////////추가된 코드 END////////////////////////
<div class="input-group my-3">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-envelope-o" aria-hidden="true"></i></span>
</div>
<input type="text" name="mb_email" id="mb_email" required class="form-control required email" maxlength="100" size="30" placeholder="계약시 등록하신 이메일 ">
<div class="input-group-append">
<button type="submit" id="btn_sumbit" class="btn btn-primary">인증메일 보내기</button>
</div>
</div>
<div class="text-center">
<?php echo captcha_html(); ?>
</div>
</div>
</form>
이메일 인증함수를 사용 안하고, xml 로 POST 요청후 Response 된 이메일과 사용자가 입력한 이메일 값이 같을 경우만 이메일주소로 비밀번호를 변경할 수 있는 이메일을 보내게 하려합니다.
../skin/member/basic/password_lost2.php 의 코드입니다(아래)
<?php
$email = get_email_address(trim($_POST['mb_email']));
if (!$email)
alert_close('메일주소 오류입니다.');
$sql = " select count(*) as cnt from {$g5['member_table']} where mb_email = '$email' ";
$row = sql_fetch($sql);
if ($row['cnt'] > 1)
alert('동일한 메일주소가 2개 이상 존재합니다.\\n\\n관리자에게 문의하여 주십시오.');
$sql = " select mb_no, mb_id, mb_name, mb_nick, mb_email, mb_datetime, mb_leave_date from {$g5['member_table']} where mb_email = '$email' ";
$mb = sql_fetch($sql);
if (empty($mb['mb_id']) || $mb['mb_leave_date']) {
alert('존재하지 않는 회원입니다.');
} elseif (is_admin($mb['mb_id'])) {
alert('관리자 아이디는 접근 불가합니다.');
}
?>
위 코드느 DB 에 이메일이 있을 경우 비교해서 참이면 입력한 메일로 비번 임시번호를 보내는 건데,
보안사정상 DB 에 이메일과 휴대전화 를 제거한 상태입니다.
그러나 회원들의 개인정보는 보안 서버에 있는 xml 로 Response 해서 사용자가 입력한 room_no 와 user_name 그리고 이메일 주소를 입력해서 POST 방식인데, Request 를 보시면 아시겠지만,
room_no 와 user_name 을 request 로 보내면 Response 데이터는 이메일주소가 돌아 오는 방식입니다.
돌아온 이메일과 자신이 입력한 이메일이 같으면 그누보드에서 작동하는 이메일로보내는 비밀번호찾기
로직이 작동하게 하고 싶습니다.
password_lost2.php 의 코드를 대처해서 작동해야 하는데 아무리 뒤져보고 질문을 했지만 감은 오는데 실행 능력이 모자라 이렇게 다시 한 번 질문을 올립니다.
여기저기 물어 보고 ChatGPT BingAI 에게도 질문 하고 해도 전혀...ㅡㅡ;
아래는 현재 까지 수집한 코드입니다.
<?php
// 사용자가 입력한 room_no와 user_name을 가져옵니다.
$roomNo = $_POST['room_no'];
$userName = $_POST['user_name'];
// POST 요청을 위한 데이터를 설정합니다.
$requestData = '<?xml version="1.0"?>
<REQUEST003>
<ROOM_NO>' . $roomNo . '</ROOM_NO>
<user>' . $userName . '</user>
</REQUEST003>';
// 보안 서버의 URL을 설정합니다.
$url = 'http://jdream.winsult.co.kr/xml/request.html';
// POST 요청을 보냅니다.
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $requestData,
CURLOPT_HTTPHEADER => ['Content-Type: text/xml; charset=utf-8'],
]);
$result = curl_exec($ch);
curl_close($ch);
// 응답된 데이터를 파싱합니다.
$xml_data = simplexml_load_string($result);
// 응답된 데이터에서 이메일 주소를 가져옵니다.
$response_email = (string) $xml_data->USER_INFO->EMAIL;
// 사용자가 입력한 이메일 주소를 가져옵니다.
$user_email = $_POST['mb_email'];
// 응답된 이메일과 사용자가 입력한 이메일이 같은지 확인합니다.
if ($response_email == $user_email) {
// 임시비밀번호 발급
$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 .= '저희 CLUB 850 에서는 관리자라도 회원님의 비밀번호를 알 수 없기 때문에, 비밀번호를 알려드리는 대신 새로운 비밀번호를 생성하여 안내 해드리고 있습니다.<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);
run_event('password_lost2_after', $mb, $mb_nonce, $mb_lost_certify);
alert_close($email.' 메일로 회원아이디와 비밀번호를 인증할 수 있는 메일이 발송 되었습니다.\\n\\n메일을 확인하여 주십시오.\\nCLUB 850');
} else {
// 경고 메시지를 표시합니다.
alert('입력하신 정보가 올바르지 않습니다.');
}
?>
테스트 결과 '입력하신 정보가 올바르지 않습니다.' 오류납니다.
정확히 받아서 대입해 주었는데 오류 나네요..
혹시 이부분 아시는 분들은 조언을 부탁 드립니다.^^
!-->
답변을 작성하시기 전에 로그인 해주세요.