제목 | 모델과 폼을 이용한 로그인 접속 | ||
---|---|---|---|
카테고리 | CIBOARD | ||
글쓴이 | littlemk | 작성시각 | 2018/03/02 16:52:51 |
|
|||
안녕하세요. CI 시작한지 엊그제라..ㅠ 도움되어주시면 정말 감사드리겠습니다.
현재 세션없이 모델(db)을 이용해 사용자가 id,pw을 입력하면 기존에 저장되어있는 db 테이블의 id,pw값을 비교해 값이 맞으면 로그인 될 수 있는 것을 만들어 보려고합니다. 헌데 제가 모델을 잘 이해 못하는건지..ㅠ 에러가 계속나네요..
제 코드는 이렇습니다..
[Model 부분입니다] [User_model.php] <?php class User_model extends CI_Model { public function __construct() { parent::__construct(); } function login(){ $this->db->select("mem_id, mem_pw"); $this->db->from('member'); $query = $this->db->get(); return $query->result(); } } ?>
[controller 부분입니다] [Form.php] <?php class Form extends CI_Controller { function __construct() { parent::__construct(); $this->load->database(); $this->load->model('User_model'); } function index() { $this->login(); } function login(){ $this->User_model->login(); $this->load->helper(array('form', 'url')); $this->load->library('form_validation'); $this->form_validation->set_rules('mem_id', '아이디' , 'trim|required|min_length[5]'); $this->form_validation->set_rules('mem_pw', '비밀번호' , 'trim|required|min_length[5]'); if($this->form_validation->run() == FALSE){ $this->load->view('Main_test'); // basic page } else{ $this->load->view('Main_test_Suc', $data);//Success page } } } ?>
[VIEW 부분입니다] [Main_test.php] <html> <head> <title>Main_test php 페이지입니다.</title> <style> p{ width: 400px; border:1px solid #ccc; } </style> </head> <body> <?= validation_errors(); ?> <?= form_open('form'); ?> mem_id : <input type='text' name='mem_id' placeholder='mem_id를 입력하세요.'> mem_pw : <input type='text' name='mem_pw' placeholder='mem_pw를 입력하세요.'> <div><input type='submit' name='submit' value='SUBMIT'></div> <br><br> <p> 테이블에 있는 id와 패스워드<br> <br> 1) ID: global / PW: global<br> </p> </form> </body> </html>
[Main_test_Suc.php] <html> <head> <title>Main_test Success php 페이지 입니다.</title> <style> p{ font-size: 20px; } </style> </head> <body> <h3>폼이 성공적으로 실행되었습니다 :)</h3> <p><?php echo anchor('form', '되돌아가기'); ?></p> </body> </html>
제 소스는 이러합니다.. 무엇이 잘못된건지 밤새 고민해도 해답이 떠오르지 않아 선배님들의 조언을 구합니다 ㅠㅠ |
|||
다음글 | 트랜잭션을 올바르게 작성했는지 알고 싶습니다 (1) | ||
이전글 | Retrofit2 사용시 질문입니다. (2) | ||
변종원(웅파)
/
2018/03/02 17:51:47 /
추천
0
|
littlemk
/
2018/03/04 01:33:21 /
추천
0
안녕하세요! 우선 답변 감사드립니다. 헌데 또 궁금한 사항이 생겨서 질문하나 해드려도 될까요?ㅠㅠ 죄송합니다.. 현재 답변주신 것처럼 로직에 문제가 있는 것을 보고, 다시 모델 매뉴얼을 읽고 테스트 중인데요! 제가 궁금한 점은.. 컨트롤러 상에서 사용자가 입력한 폼 데이터와 디비의 데이터가 일치하면 성공페이지, 일치하지않으면 에러페이지를 띄울려고 합니다. 하지만, 제가 잘 못하는건지.. 사용자가 입력한 폼 데이터와 디비(모델)의 데이터가 자꾸 일치하지않는다고 나오네요 ㅠㅠ (예를들어 테이블에 id: user/ pw: user로 치고 폼에도 똑같이 쓰고 submit버튼을 누르면 에러페이지가 나오는 상황입니다) 제 소스는 아래와 같습니다..! 컨트롤러의 메소드 중 일부분 입니다.
function login(){
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('mem_id', '아이디' , 'trim|required|min_length[5]|alpha_numeric');
$this->form_validation->set_rules('mem_pw', '비밀번호' , 'trim|required|min_length[5]');
if($this->form_validation->run() == TRUE){
$this->load->model('user_model');
$mem_id = $this->input->post('mem_id');
$mem_pw = $this->input->post('mem_pw');
$auth = $this->user_model->login($mem_id, $mem_pw);
if($auth==$mem_id){
$this->load->view('Main_test_Suc',$auth); // 성공 페이지
}
else{
$this->load->view('fail'); // 에러 페이지
}
}
else{
$this->load->view('Main_test'); // basic page
}
}
|
변종원(웅파)
/
2018/03/04 21:12:14 /
추천
0
위에 작성하신 login 모델에 의하면 배열이 반환됩니다. 배열==변수 당연히 틀리다고 나오겠죠. |
littlemk
/
2018/03/05 13:54:11 /
추천
0
ㅠㅠ 전 바보였나 봅니다.. 이제 되네요! 빠른 답변 너무 감사드려요..!! 좋은 하루되세요~
|
모델 매뉴얼을 다시 보셔야겠네요.
파일명 및 클래스명 첫자 대문자이고 사용할때는 소문자입니다.
$this->load->model('user_model');
그리고 로직 에러도 있습니다. 모델에서 회원정보를 리턴했는데 컨트롤러에서 사용하는 부분이 없습니다.
만드신 로직은 폼 데이터가 있냐 없냐 체크하는 것이고 폼검증 통과한 후에 모델을 호출하고 리턴된 데이터가 있으면(로그인 성공)
로그인 성공 페이지로, 실패하면 실패 페이지로 분기해주시면 됩니다.
만들기 전에 종이에 로직을 그래보세요. (순서도라 불리는 것)