패스워드찾기 할 때 임의패스워드로 바로 변경됩니다.
본문
패스워드찾기 할 때 팝업창이 아니라 password_lost2.php를 ajax로 바로 호출해서
임시비밀번호 발급되고 메일이 발송되게 했습니다.
alert으로 되어있던 부분은 그냥
{
print_r(json_encode("관리자 아이디는 접근 불가합니다."));
exit;
}
이런식으로 출력하게만 처리 했고요.
메일은 정상적으로 잘 발송되는데,
문제는 임시비밀번호가 생성되는게 아니라 그냥 메일 발송할때 비밀번호도 수정해버립니다.
혹시나 싶어서 쿼리를 찍어봤는데
update g5_member set mb_lost_certify = '0b1dbf32cc16f34d5780cc4c0244f048 *FD6DFD8386A69380AF6FD82E648F5ADE302F2E27' where mb_id = '*** 개인정보보호를 위한 이메일주소 노출방지 ***'
이런식으로 mb_lost_certify를 업데이트하도록 되어 있습니다.
근데 막상 mysql에서 확인해보면 mb_lost_certify가 아니라 mb_password가 변경이 되어있네요.
왜 이럴까요...
답변 5
발송된 메일에 password_lost_certify 이 파일의 연결된 항목을 링크? 클릭하면 기존처럼 비밀번호가 변경이 됩니다.
password_lost_certify 이 파일의 연결 주소가 정의 돼 있으니, password_lost2.php 이 파일의 소스를 살펴보세요..
결과에 영향을 미치는지는 모르겠습니다만
아래 부분이 이상합니다.
alert으로 되어있던 부분은 그냥
{
print_r(json_encode("관리자 아이디는 접근 불가합니다."));
exit;
}
위 print_r()함수는 배열(array)을 출력할 때 사용합니다.
그런데 인자인 json_encode()는 배열을 json형태로 바꿔주는 함수입니다.
즉, 배열이 아니라는 말씀.
그리고 json_encode("관리자 아이디는 접근 불가합니다") 하는 것도 내부 인자로 배열이 와야 하는 데
문자열(string)이 왔네요. 에러가 날걸로 보입니다.
혹시나 해서 원본 password_lost2.php 파일에 bbs/password_lost.php 팝업창에서 비밀번호 찾기 해보니 같은 증상이네요.
자답입니다.
정확한 이유인지는 모르겠습니다만, 메일 수신시 사용하는 메일서비스가 메일에 포함되어있는 링크를 미리 열어보기 때문일 것이다. 라는 가정하에
password_lost2.php 에서 임시비밀번호를 발급할 때 mb_login_ip에 내 IP를 같이 넣어주고
password_lost_certify.php에서 mb_login_ip와 접속한 아이피가 같을 경우에 임시비밀번호를 교체하도록 처리하였습니다.
수정결과 정상적으로 작동합니다.
ajax문제가 아니라 원본상태에서도 발생하는 문제였네요.