패스워드찾기 할 때 임의패스워드로 바로 변경됩니다.

패스워드찾기 할 때 임의패스워드로 바로 변경됩니다.

QA

패스워드찾기 할 때 임의패스워드로 바로 변경됩니다.

본문

패스워드찾기 할 때 팝업창이 아니라 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 이 파일의 소스를 살펴보세요..

password_lost2.php 에서 메일발송할때 content에서 password_lost_certify 링크거는분을 빼보니까 정상적으로 작동하네요...
그냥 메일에 링크 포함만 시키는데도 password_lost_certify 에 접속 한거처럼 작동해버리니 난감하네요..

결과에 영향을 미치는지는 모르겠습니다만

아래 부분이 이상합니다.

alert으로 되어있던 부분은 그냥

{

    print_r(json_encode("관리자 아이디는 접근 불가합니다."));
    exit;

}

위 print_r()함수는 배열(array)을 출력할 때 사용합니다.

그런데 인자인 json_encode()는 배열을 json형태로 바꿔주는 함수입니다.

즉, 배열이 아니라는 말씀.

그리고 json_encode("관리자 아이디는 접근 불가합니다") 하는 것도 내부 인자로 배열이 와야 하는 데

문자열(string)이 왔네요. 에러가 날걸로 보입니다.

 

print_r과 json_encode 문제는 아닙니다. print_r은 배열'도' 출력할 수 있는 함수이지 배열'만'을 출력하기 위한 함수는 아닙니다. 일반 문자열 출력에 사용해도 오류가 나진 않습니다.

json_encode도 마찬가지로 배열'도' JSON으로 바꿔주는 함수이지 배열에만 사용하는 함수는 아닙니다.

물론 제가 얘기했던대로만 인자가 사용되는 것은 아닙니다. php.net에 보면 인자의 데이터타입이 mixed 이기도 하기 때문에요.
그런데 저렇게 해서 찍어 보면 null값이 나오는데 그걸 원하지는 않으셨을 듯 한데요.
어떻든 문제를 해결하셨다니 잘되셨네요.

자답입니다.

정확한 이유인지는 모르겠습니다만, 메일 수신시 사용하는 메일서비스가 메일에 포함되어있는 링크를 미리 열어보기 때문일 것이다. 라는 가정하에

 

password_lost2.php 에서 임시비밀번호를 발급할 때 mb_login_ip에 내 IP를 같이 넣어주고

password_lost_certify.php에서 mb_login_ip와 접속한 아이피가 같을 경우에 임시비밀번호를 교체하도록 처리하였습니다.

 

수정결과 정상적으로 작동합니다.

 

ajax문제가 아니라 원본상태에서도 발생하는 문제였네요.

답변을 작성하시기 전에 로그인 해주세요.
전체 26
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT