CI 묻고 답하기

제목 가입 중복시 아이디 체크문제
글쓴이 피자한판두판 작성시각 2012/07/15 20:50:38
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 19247   RSS
<script type="text/javascript" src="/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
  $(document).ready(function(){
   $("#all_joinus").click(function(){
     var action = $("#all_joinus_form").attr("action");
     var ajfData = {
      username : $("#username").val(),
      password : $("#password").val(),
      is_ajax  : 1
     };

     $.ajax({
      type:"post",
      url :action,
      data: ajfData,
      success : function(response)
      {
       if(response=="success")
       {
        alert("success");
        location.href="/all/all_joinus_success";
       }
       else
       {
        alert("fail");
        location.href="/all/all_joinus_fail";
       }
      }
     });
     return false;
   });
  });
</script>

<form name="all_joinus_form" id="all_joinus_form" method="post" action="all_joinus_form">
 <table align="center" style="width:550px;height:50px;border:3px; #F0003F solid;">
  <tr>
   <td align="right" valign="middle" style="font-size:15px";>UserName</td>
   <td align="center" valign="middle" style="font-size:15px";>
    <input type="text" name="username" id="username" value="" style="width:100px;">
   </td>
  </tr>
  
  <tr>
   <td align="right" valign="middle" style="font-size:15px";>PassWord</td>
   <td align="center" valign="middle" style="font-size:15px";>
    <input type="password" name="password" id="password" value="" style="width:100px;">
   </td>
  </tr>
 </table>
 
 <table align="center" style="width:550px;height:50px;border:1px; #F1234F solid;">
  <tr>
   <td align="center" valign="middle" style="font-size:15px";>
    <input type="submit" name="all_joinus" id="all_joinus" value="JOINUS" style="width:80px;">
   </td>
  </tr>
 </table> 
</form>
뷰에서 사용할때구여..

function all_joinus_form(){
   $this->load->model("all_model");
   $query = $this->all_model->all_joinus();
   
   if($query)
   {
    echo "success";
   }
   else
   {
    echo "fail";
   }
  }
controll부분이구여

function all_joinus(){
   $joinus_insert_data = array(
    'username' => $this->input->post('username'),
    'password' => $this->input->post('password')
   );
   
   $insert = $this->db->insert('all_member', $joinus_insert_data);
   
   if($insert)
   {
    return true;
   }
   else
   {
    return false;
   }
  }
model부분입니다





회원가입이나 로그인 체크할떄 아이디중복체크나 그런걸 하잖아요
db에 저장은 되고 이외에 로그인부분도 체크는되는데
가입할떄 아이디를 중복체크해야하는데 그 쿼리부분을 어떻게 짜야할지 생각이 안나네요
일단 입력받은 아이디랑 디비에 있는 아이디에 있는걸 체크해야하는데

디비에는 아이디가 많이 저장되어있는데 그걸 어떻게 가져와서 비교해야하는건지...

그리고 웅파님이 예전에 올려주신 소스를 다운받아서봤는데(cikorea.net -> 게시판 가입 로그인..등등)  참고하려했으나
이해가 잘 안가더라구여.. 어디에서 갔다가 가는건지.. 제가보기엔 소스가너무어려운거같아요 ㅠㅠ
위가 제가 짠 소스인데 부끄럽지만 조언좀부탁드릴게요 게시판도 구현은했으나 따라해본정도밖에 지나지 않아서...


 다음글 head 내용이 body로 들어오는 문제 (5)
 이전글 session, 툴 (1)

댓글

변종원(웅파) / 2012/07/15 21:20:59 / 추천 0
 all_joinus 모델에서 insert 하기전에 넘겨받은 아이디로 select해서 아이디가 있으면 
false나 아이디가 있다는 시그널을 컨트롤러로 보냅니다.

없으면 그냥 insert 하고 기존대로 처리하면 되구요.

컨트롤러에서는 success, fail 뿐만 아니라 모델에서 아이디 중복이라고 왔을 경우에 dup 정도 하나를
더 넘겨주면 됩니다 

그러면 뷰에서 다시 dup인 경우의 처리를 해주면 됩니다.
피자한판두판 / 2012/07/15 21:57:48 / 추천 0

웅파//
답변 항상 감사드립니다^^

 

$this->db->select('id');
   $this->db->from('all_member');
   $this->db->where('id', $id);
   $result = $this->db->get();

   print_r($result);

이렇게했을떄 id는 가져오는데, db에있는 수많은 id랑 어떻게 비교를 하나요??

milosz / 2012/07/16 07:13:07 / 추천 0
if($result->num_rows() > 0)
{
 return TRUE;
}
else
{
 return FALSE;
}
피자한판두판 / 2012/07/16 09:48:14 / 추천 0
    if($query->num_rows() > 0){
                for($i=1; $i<=$query->num_rows(); $i++){
                    $query[0]->id;
                    $query[1]->username;
                }
            }

이렇게 생각을 했었는데요.. 저 $i를 어디다 넣어야 할지 모르겠네요 [0]번째 값은 autoincrement 아이디구여
username이 아이디입니다.

갯수는 제대로 불러와지는데 저기서 아이디값만 어떻게 다시 다 뽑을지...
.. 추가적으로 궁금한건데... 웅파님께서 올려주신 포럼소스 회원가입 부분은 어디에 있나요? Controller에는 없는거같아서요;;
milosz / 2012/07/16 10:23:39 / 추천 0
디테일하게 대충(?) 작성해봤습니다. 액티브레코드라고 기존 php에서 개발 할 때와 크게 다른 점이 없으며 메뉴얼 보시면 각각 해당 부분에 대해 어떻게 작성해야 하는지 잘 설명이 되어 있습니다.

또한 여기에서 단편적으로 질문하시는 것보다 시중에 나와있는 PHP 도서를 보시면 일상적으로 사용되는 로직에 대해 좀더 쉽게 이해하고 접근하실 수 있으리라 봅니다.
 
function is_username_exist($username)
{

 $this->db->where('username', $username);
 $query = $this->db->get('all_member');

 if($query->num_rows() > 0)
 {
   return TRUE;
 }
 else
 {
   return FALSE;
 }

}

function all_joinus()
{
  $username = $this->input->post('username');
  if( $this->is_username_exist($username) === TRUE )
  {
    return FALSE;
  }
  /*
    extra code

  */
} 

첨언하면 model에서 데이터를 직접 $this->input->post() 식으로 받아오시는 것보다 controller나 library에서 파라미터로 넘겨주는게 좋습니다. 만약 post값을 고정적으로 받으면 같은 역할을 하는 function이 수십개가 될 가능성이 있어요..ㅠㅠ 나름 OOP 하려고 머리를 굴리는게 나중에 손발이 고생하지 않는 길입니다ㅎㅎ
변종원(웅파) / 2012/07/16 10:28:49 / 추천 0
피자한판두판/ auth 컨트롤러가 가입, 수정, 로그인, 로그아웃 담당합니다.
포럼 회원가입 클릭하시면 주소가 나오고 그 주소 보시면 컨트롤러, 메소드 나옵니다.
(게시판 관련된 부분은 route.php를 이용하기에 모를 수 있습니다만)

그 정도 물어보실 정도면 매뉴얼 다시 보시고 작업 진행하시는 것이 좋을 것 같습니다.
피자한판두판 / 2012/07/16 10:46:18 / 추천 0
세세한 답변 감사합니다

저렇게 보니 그렇게 어려운 소스도 아닌데 왜 생각을 못했을까 하네요..ㅠㅠ;;