비밀번호 변경 질문드립니다. 채택완료
안녕하세요. 항상 부족한점이 많아 그누보드 질문에서 많은 내용을 보고 공부하고 있습니다.
그누보드 버전은 5.5.8 카페24 웹호스팅(sftp)로 호스팅중이고 linux, nginx, php 버전은 7.4.5버전을 사용중입니다.
현재 그누보드 시스템상으로는 로그인 페이지에서 비밀번호 찾기 클릭시 새창에서 회원가입한 유저의 이메일을 기입하여 해당 유저의 이메일에서 무작위로 생성된 비밀번호를 비밀번호 변경하기 클릭시 변경되도록 되어있습니다.
현재 수정중인건, /bbs/password_lost2.php에서 비밀번호 변경 페이지 (/page/password_change.php)로 가도록 수정을 해놓은 상태입니다. password_lost2.php에서 생성된 메일에서 비밀번호 변경을 url을 password_lost_certify.php에서 검증후 페이지로 이동하는 로직을 확인하고,
/bbs/password_lost_certify.php
로 수정을 하여, 두번 클릭하면 인증 만료가 되도록 해놓았고,
/page/password_change.php에서는
이렇게 해놓아서 mb_no, mb_nonce가 리다이렉트 되어도 받아오는걸 확인했습니다.

url에도 /page/password_change.php?mb_no=122&mb_nonce=2d9a2a037bcb9a5af428b7b8e462ed70 이런식으로 나오는것도 확인했습니다. 그리고 password_update.php에서 비밀번호가 서로 다르면 다르다는 alert, 맞으면 비밀번호 변경이 완료 , 에러시 실패라는 alert도 나오도록 해놨습니다.
/page/password_update.php
이렇게 해놓은 상태입니다.
// POST 데이터 검증
$new_password = $_POST['mb_password'];
$new_password_confirm = $_POST['mb_password_re'];
$mb_no = $_POST['mb_no'];
$mb_nonce = $_POST['mb_nonce'];
// 두 비밀번호가 일치하는지 확인
if ($new_password !== $new_password_confirm) {
alert('비밀번호가 일치하지 않습니다.');
exit;
}
이부분까지는 문제없이 되는데,
// 데이터베이스에서 사용자 확인
$sql = "SELECT mb_id FROM {$g5['member_table']} WHERE mb_no = '$mb_no' AND mb_lost_certify = '$mb_nonce'";
$result = sql_query($sql);
if (sql_num_rows($result) == 0) {
alert('유효하지 않은 요청입니다.');
exit;
}
// 새 비밀번호 암호화
$encrypted_password = get_encrypt_string($new_password);
// 데이터베이스에 새 비밀번호 업데이트
$sql = "UPDATE {$g5['member_table']} SET mb_password = '$encrypted_password' WHERE mb_no = '$mb_no'";
if(sql_query($sql)) {
alert('비밀번호가 변경되었습니다.', G5_BBS_URL.'/login.php');
} else {
alert('비밀번호 변경에 실패했습니다.');
}
function alert($msg, $url = '') {
if ($url) {
echo "alert('$msg'); window.location.href = '$url';";
} else {
echo "alert('$msg'); history.back();";
}
exit;
}
여기부터 추가하니 500 error이 떴고,
ini_set('display_errors', 1);
error_reporting(E_ALL);
로 확인해보니
Notice: Undefined variable: g5 in /www/page/password_update.php on line 23 Notice: Trying to access array offset on value of type null in /www/page/password_update.php on line 23 Fatal error: Uncaught Error: Call to undefined function sql_query() in /www/page/password_update.php:24 Stack trace: #0 {main} thrown in /www/page/password_update.php on line 24
이런 오류가 나오고 있습니다.
_.common.php의 경로도 제대로 되어있고, 혹시몰라 common.lib.php도 include 했는데 g5정의가 안되었다고 나오는데
이유를 알수없어서 자문을 구하고자 질문드립니다. 어디가 잘못되었는지 알려주실수 있으실까요?
답변 1개
include_once('../../_common.php'); 이렇게 해보세요 아니면 _common.php 이게 내부에 있는지 확인해보세요
이거 경로 문제에요
답변에 대한 댓글 2개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
function alert($msg, $url = '') {
if ($url) {
echo "<script type='text/javascript'>alert('$msg'); window.location.href = '$url';</script>";
} else {
echo "<script type='text/javascript'>alert('$msg'); history.back();</script>";
}
exit;
}
이부분이 alert과 함수 alert가 겹쳐서 그런지 작동이 안되더라구요. 해당코드 지우고 다른방식으로 리다이렉트 되도록 하니까 잘됩니다. 감사합니다.