CI 묻고 답하기

제목 모델과 폼을 이용한 로그인 접속
카테고리 CIBOARD
글쓴이 littlemk 작성시각 2018/03/02 16:52:51
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 13066   RSS

안녕하세요. 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

모델 매뉴얼을 다시 보셔야겠네요.

파일명 및 클래스명 첫자 대문자이고 사용할때는 소문자입니다.

$this->load->model('user_model');

그리고 로직 에러도 있습니다. 모델에서 회원정보를 리턴했는데 컨트롤러에서 사용하는 부분이 없습니다.

만드신 로직은 폼 데이터가 있냐 없냐 체크하는 것이고 폼검증 통과한 후에 모델을 호출하고 리턴된 데이터가 있으면(로그인 성공)

로그인 성공 페이지로, 실패하면 실패 페이지로 분기해주시면 됩니다.

만들기 전에 종이에 로직을 그래보세요. (순서도라 불리는 것)

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
ㅠㅠ 전 바보였나 봅니다.. 이제 되네요! 빠른 답변 너무 감사드려요..!! 좋은 하루되세요~