제목 | 회원가입 중복체크 질문 드립니다. | ||
---|---|---|---|
글쓴이 | 책상다리 | 작성시각 | 2014/03/05 14:40:39 |
|
|||
회원가입시 중복 체크를 하는데, 어제와 마찬가지로 포럼소스를 참고 하고 있습니다. 컨트롤러 부분에 $errors = $this->tank_auth->get_error_message();
foreach ($errors as $k => $v) $data['errors'][$k] = $this->lang->line($v);
요 부분이 아마 애러메세지를 출력하는 부분이 아닐까 생각합니다. 아 language 폴더에 tank_auth 넣었고, 컨트롤러에서 $this->lang->load('tank_auth'); 도 햇습니다. 모델에선 is_userid_available is_nickname_available is_email_available 함수도 선언해줬습니다. 뷰에서는 <td style="color: red;"><?php echo form_error($userid['name']); ?><?php echo isset($errors[$userid['name']])?$errors[$userid['name']]:''; ?></td> 이런식으로 쭉 선언해줬습니다만..... 출력이 안됩니다 ㅠ 아무것도 입력하지 않았을때는 옆에 빨간글씨로 잘 뜨는거 보니까...다른 문제인거 같은데... 혹시 라이브러리의 function get_error_message() {
return $this->error;
}
이부분이 문제 일까요.. 조금만 도움을 부탁드립니다. ㅠ //컨트롤러 public function join() { $this->output->enable_profiler(FALSE); $this->load->library('form_validation'); //폼 검증할 필드와 규칙 사전 정의 $this->form_validation->set_rules('id','아이디','required'); $this->form_validation->set_rules('password','비밀번호','required'); $this->form_validation->set_rules('chk_pwd','비밀번호체크','required'); $this->form_validation->set_rules('name','닉네임','required'); $this->form_validation->set_rules('email','이메일','required'); $data['errors'] = array(); if( $this->form_validation->run()) { if (!is_null($data = $this->tank_auth->create_user( $this->form_validation->set_value('id'), $this->form_validation->set_value('password'), //$this->form_validation->set_value('chk_pwd'), $this->form_validation->set_value('name'), $this->form_validation->set_value('email') ))) { alert('회원 가입을 축하드립니다.','/'); exit; } else { $errors = $this->tank_auth->get_error_message(); foreach ($errors as $k => $v) $data['errors'][$k] = $this->lang->line($v); } } $this->load->view('/join/join_v', $data); } //모델 function is_userid_available($id) { $this->db->select('1', FALSE); $this->db->where('LOWER(username)=', strtolower($id)); $query = $this->db->get(self::TABLE); return $query->num_rows() == 0; } function is_nickname_available($name) { $this->db->select('1', FALSE); $this->db->where('LOWER(name)=', strtolower($name)); $query = $this->db->get(self::TABLE); return $query->num_rows() == 0; } function is_email_available($email) { $this->db->select('1', FALSE); $this->db->where('LOWER(email)=', strtolower($email)); //$this->db->or_where('LOWER(new_email)=', strtolower($email)); $query = $this->db->get(self::TABLE); return $query->num_rows() == 0; } function create_user($data, $activated = TRUE) { $data['reg_date'] = date('Y-m-d H:i:s'); //$data['activated'] = $activated ? 1 : 0; if ($this->db->insert(self::TABLE, $data)) { print_r($data); $user_id = $this->db->insert_id(); return array('user_id' => $user_id); } return NULL; } |
|||
다음글 | 코드이그나이저 설치질문 (10) | ||
이전글 | 같은 컨트롤러안의 여러 함수 호출 (3) | ||
변종원(웅파)
/
2014/03/05 15:31:23 /
추천
0
|
책상다리
/
2014/03/05 15:35:27 /
추천
0
음 조금 설명이 이상했던 모양입니다.
회원가입 할때 중복체크를 하려고 하는겁니다. 그리고 중복일 경우에 옆쪽에 이미 중복된 아이디 입니다. 뭐 이런식으로 애러메세지가 나오는거구요. 출력이 안된다는것은 중복된 아이디나 이메일을 넣었을때 옆쪽에 아무런 메세지가 나오지 않는다는 뜻이었구요. 아무것도 입력하지 않았을때는 옆쪽에 아이디를 입력해주세요. 뭐 이런식으로 뜨는걸 보니, 뷰쪽의 문제는 아닌거 같습니다만... 전체 소스를 올리자니 너무 길어질거 같아서 부분부분 올렸는데, 그래서 그런가 으으 부분적으로나마 전부 올려보겠습니다;;; |
변종원(웅파)
/
2014/03/05 15:50:41 /
추천
0
$this ->tank_auth->create_user() 함수에서 중복체크 로직이 있는지 보세요.
|
책상다리
/
2014/03/05 15:55:56 /
추천
0
if ((strlen($id) > 0) AND !$this->ci->join_m->is_userid_available($id)) { $this->error = array('username' => 'auth_userid_in_use'); } elseif (!$this->ci->join_m->is_nickname_available($name)) { $this->error = array('name' => 'auth_nickname_in_use'); } /*else if ((strlen($username) > 0) AND !$this->ci->users->is_username_available($username)) { $this->error = array('username' => 'auth_username_in_use'); } */ elseif (!$this->ci->join_m->is_email_available($email)) { $this->error = array('email' => 'auth_email_in_use'); }
이렇게 라이브러리에 있습니다. 음... function get_error_message() { return $this->error; } 요것도 있습니다. 라이브러리에 ㅠㅠ |
변종원(웅파)
/
2014/03/05 16:48:59 /
추천
0
내용만 전부 입력이 되면 위 로직으로서는 당연히 통과됩니다.
create_user()함수에서 체크하고 $this->error에 담아도 그 이후 액션은 회원가입축하합니다 입니다. 매뉴얼 보시고 폼검증에서 콜백함수 적용하세요. |
책상다리
/
2014/03/05 17:07:39 /
추천
0
아....조금 알거 같습니다...하 아직도 이런거 하나 못해서야 흐...
감사합니다. |
폼검증값 복원 말씀하시는 건가요? 그렇다면 http://cikorea.net/user_guide_2.1.0/libraries/form_validation.html#repopulatingform 매뉴얼 참고하세요.
아이디 중복체크는 폼검증의 콜백함수 이용합니다.
매뉴얼에서 콜백함수 부분 보시기 바랍니다. 포럼 원본소스도 비교해보시구요.