비밀번호찾기

비밀번호찾기

QA

비밀번호찾기

답변 1

본문

비밀번호찾기에서 계속 error가 나서 확인해보니,

회원정보의 mb_lost_certify 필드에는 15f005097a5b3a1c5b7e9a690b2b2d63 48ea4c103de9905e

이렇게 입력이 되어 있고 (※값의 중간에 공백이 있습니다.)

메일로 받은 확인 링크의 값은 15f005097a5b3a1c5b7e9a690b2b2d63로 정확히 공백까지만 끊겨서 받으니 비밀번호 변경이 되지 않습니다.

trim으로 $mb_nonce의 공백을 없애려고 해도 공백은 계속 들어가네요

 

아래는 소스입니다.

=============================================

// 임시비밀번호 발급
$change_password = rand(100000, 999999);
$mb_lost_certify = get_encrypt_string($change_password);

// 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용
$mb_nonce = md5(pack('V*', rand(), rand(), rand(), rand()));
$mb_nonce = trim($mb_nonce);
// 임시비밀번호와 난수를 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);

=============================================

이 질문에 댓글 쓰기 :

답변 1

trim 함수는 앞 뒤 공백을 제거해주는함수라 내부 공백 제거시에는 replace 쓰면 될거같네요

str_replace(" ", "", $mb_nonce); 로 모든 공백제거를 해도
mb_lost_certify필드에는 공백이 들어가 있습니다.

해당 필드의 설정값은 아래와 같습니다.
mb_lost_certify varchar(255) utf8_general_ci 아니오 없음

$mb_lost_certify 값을 db에 입력하기전 echo로 확인해보니 공백앞까지만 출력되고
막상 db에 입력된 값은 공백 포함 공백 뒤부분까지 입력되어 있네요.
이게 무슨 경우인지...

$sql = " update {$g5['member_table']} set mb_lost_certify = '$mb_nonce $mb_lost_certify' where mb_id = '{$mb['mb_id']}' ";

여기 보시면 '$mb_nonce $mb_lost_certify' 여기 사이에 공백이 들어가있어서
mb_lost_certify 필드에 $mb_nonce + 공백 + $mb_lost_certify 값이 들어가는거같네요

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 26
© SIRSOFT
현재 페이지 제일 처음으로