테스트 사이트 - 개발 중인 베타 버전입니다

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

격렬한저항 6년 전 조회 4,433

패스워드찾기 할 때 팝업창이 아니라 password_lost2.php를 ajax로 바로 호출해서  

임시비밀번호 발급되고 메일이 발송되게 했습니다.

 

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

{

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

}

이런식으로 출력하게만 처리 했고요.

 

메일은 정상적으로 잘 발송되는데,

문제는 임시비밀번호가 생성되는게 아니라 그냥 메일 발송할때 비밀번호도 수정해버립니다.

 

혹시나 싶어서 쿼리를 찍어봤는데 

update g5_member set mb_lost_certify = '0b1dbf32cc16f34d5780cc4c0244f048 *FD6DFD8386A69380AF6FD82E648F5ADE302F2E27' where mb_id = 'abc@abc.com'

 

이런식으로 mb_lost_certify를 업데이트하도록 되어 있습니다.

근데 막상 mysql에서 확인해보면 mb_lost_certify가 아니라 mb_password가 변경이 되어있네요.

 

왜 이럴까요...

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트
6년 전

발송된 메일에 password_lost_certify 이 파일의 연결된 항목을 링크? 클릭하면 기존처럼 비밀번호가 변경이 됩니다.

password_lost_certify 이 파일의 연결 주소가 정의 돼 있으니, password_lost2.php 이 파일의 소스를 살펴보세요..

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

댓글을 작성하려면 로그인이 필요합니다.

격렬한저항

자답입니다.

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

 

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

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

 

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

 

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

격렬한저항

혹시나 해서 원본 password_lost2.php 파일에 bbs/password_lost.php 팝업창에서 비밀번호 찾기 해보니 같은 증상이네요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

6년 전

@격렬한저항

어느정도 기본 소스를 살펴본 뒤에 자신의 소스로 가공을 해야할듯 싶네요...

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

6년 전

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

아래 부분이 이상합니다.

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

{

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

}

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

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

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

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

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

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

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

json_encode도 마찬가지로 배열'도' JSON으로 바꿔주는 함수이지 배열에만 사용하는 함수는 아닙니다.
평정심
6년 전
물론 제가 얘기했던대로만 인자가 사용되는 것은 아닙니다. php.net에 보면 인자의 데이터타입이 mixed 이기도 하기 때문에요.
그런데 저렇게 해서 찍어 보면 null값이 나오는데 그걸 원하지는 않으셨을 듯 한데요.
어떻든 문제를 해결하셨다니 잘되셨네요.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인