상황은 이렇습니다.
로그인을 할 떄 아이디와 패스워드를 입력받습니다.
그 이후 확인버튼을 눌러 폼 검증을 할 때
아이디 부분과 패스워드 부분에 콜백함수를 걸어놨습니다.
비밀번호가 틀렸을 때는 제대로 작동하지만
아이디가 틀렸을 경우엔 아래와 같은 에러가 뜹니다.
Severity: Notice
Message: Undefined index: password
Filename: controllers/member.php
Line Number: 236
위의 에러는 입력받은 잘못된 아이디 값을
아이디의 콜백함수를 실행한 후
비밀번호의 콜백함수를 실행할 때 문제가 생겨서 나옵니다.
잘못된 아이디로 비밀번호의 콜백함수를 진행하니
쿼리엔 값이 안나오고 그래서 저런 에러가 나오는 것 같습니다.
하나의 폼 검증이 안맞는다면
다음 폼 검증을 실행하지 않는 방법이 없나요?
헉;; 웅파님 아닙니다. 아닙니다
값이 없으면 가입이 가능한 아이디므로 통과를 시켜야죠. 라고 하시는거 보니
제가 회원가입을 위한 폼을 만들었다고 생각하시는거 같습니다;
저는 로그인부분을 만든겁니다.
ㅠㅠ
if( $result['password'] == $str ) //오류나는 부분 : 아이디가 어긋나서 result[password]가 null일 때 에러가 나는듯합니다
요렇게 해보세요.
$result = $query->row_array();
if(!empty($result) && $result['password'] == $str ) //오류나는 부분 : 아이디가 어긋나서 result[password]가 null일 때 에러가 나는듯합니다
불의회상님의 답변대로 하니 잘 돌아갑니다.
ci관련된 질문을 올렸지만 php문법에 대한 것이 답이 되어서 부끄럽네요..
죄송합니다.
하루빨리 실력을 키워서 이런일 없도록 노력할게요^^ㅎㅎ
뭐가 문제인지는 모르겠지만 웅파님 말씀대로라면 패스워드 콜백함수가 실행되지
않아야 할텐데.. 이부분은 제가 주말에 테스트를 해보면서 공부해봐야겠네요.
웅파님// 괜찮습니다 ㅎㅎ 항상 친절하게 답변달아주셔서 감사합니다^^
그럼 다들 즐거운 금요일밤 보내세요!
소스상의 로직 문제인지 판단을 해야할거 같구요.
제가 보기엔 아이디가 틀렸다면 비번을 체크하기전에 먼저 폼에러를 뿌릴텐데
필요없는 변수를 콜백함수로 넘기시는건 아닌가 싶습니다.
콜백함수는 한번에 하나 처리하고 넘어가는거라 저렇게 나올 수가 없거든요.