CI 묻고 답하기

제목 로그인 부분을 작성하였는데 이상한 점이 있어서 올리게 되었어요
글쓴이 정수리 작성시각 2016/06/22 08:56:28
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 14163   RSS

1%라도 해본 질문 vs. 1%도 안해본 질문, 여러분은 어떤 질문에 손이 가십니까?

 

로그인 페이지를 만든 후 로그인을 해보았습니다

일단 흐름은 이렇습니다 메인페이지에서 로그인을 클릭하면 로그인페이지로 넘어온후

로그인페이지에서 아이디 비밀번호를 입력하면 인증 후 메인페이지로 이동합니다

로그인이 성공하면 메인페이지의 메뉴들이 바뀌게됩니다

 

그런데 최초로 로그인을 할 경우 아이이와 비밀번호를 입력하면

메인페이지로 넘어가는데 로그인이 되지않는 상태로 넘어갑니다

다시 로그인페이지로 넘어가 로그인을 하면 잘 됩니다 메인페이지의

메뉴들도 로그인한 상태의 메뉴들로 바뀌구요 혹시나 해서 다시 로그아웃

하고 로그인하니 정상적으로 잘되더라구요...

다른 브라우저에서도 최초접속시 똑같은 현상이 나타나구요 그 이후로

로그인하면 잘 접속이 됩니다;;

아파치를 재시작한 후 로그인하면 똑같은 현상이 나타나구요;;

코드를 봐도 딱히 문제가 될것이 없는 것 같습니다;

메인 뷰페이지 
<a href="/auth_c/authentication"><button>로그인</button>

Controller(로그인부분)
function authentication(){ //로그인 인증
	
		$this->load->library('form_validation');
		
		$this->form_validation->set_rules('id', '아이디', 'trim|required|min_length[3]|max_length[16]');
		
		$this->form_validation->set_rules('pass', '비밀번호', 'trim|required|min_length[5]|max_length[16]');
	
		
		if($this->form_validation->run()==TRUE){
			$user=$this->Member_m->GetById(array('id'=>$this->input->post('id')));
			
						if($this->input->post('id') == $user->ur_id&&password_verify($this->input->post('pass',true), $user->ur_ps)){
						
							$loging=array('id'=>$user->ur_id, 'logind_in'=>true);
							
							$this->session->set_userdata($loging, true);
							
							$this->load->helper('url');
							
							redirect('/jm_c');
						
						}else{
						$this->session->set_flashdata('message', '아이디 및 비밀번호를 확인해주세요.');
						
						$this->load->helper('url');
						
						redirect('/auth_c/authentication');	
						}
		
		}else{
			$this->load->view('member/login_v');
			
			$this->load->view('footer');				
					}
			
}

로그인 뷰페이지 
<?php
		if($this->session->flashdata('message')){
	?>
	<script>
		alert('<?=$this->session->flashdata('message')?>');
	</script>
	<?php
	}
?>
	<div align="center">
		<form id="login" action="/auth_c/authentication" method="post" />
			아이디: <input type="text" name="id" id="id" /><?php echo form_error('id');?>
			비밀번호: <input type="password" name="pass" id="pass" /><?php echo form_error('pass');?>
			<input type="submit" value="로그인" />
		</form>
	</div>

 

처음 메인에서 로그인을 클릭하면 controller의

authentication()로 이동하면 입력한것 것이 없기때문에 

if문의 this->form->validation() 부분에서 false가 나와서 로그인뷰페이지로 이동한 후

아이디와 비밀번호를 입력하면 form validation의 규칙에따라 검사를 하고 규칙에 적합하면

this->form->validation() 부분에서 true가 나와 입력한 아이디와 password를 받아와

모델에서 가져온 값과 비교하여  결과적으로 로그인 또는 로그인 실패라는 메세지를 띄우는 건데...

왜 최초 로그인시에는 로그인이 되지않고 그 다음부터 로그인을 할때는 정상적으로 잘되는지 알고 싶네요 ㅜㅜ.

아직 많이 부족해서 그런지 일단 제가 봤을땐 코드에는 이상이 없는것 같습니다 ㅜㅜ

 다음글 초보적인 질문하나 드립니다.ㅜㅜ (1)
 이전글 이벤트에대한 부분이 안보이는군요 (4)

댓글

변종원(웅파) / 2016/06/22 17:14:30 / 추천 0
false인 케이스를 먼저 기술해보세요
정수리 / 2016/06/23 08:46:55 / 추천 0

@웅파

답변 감사합니다

말씀하신대로  false인 케이스를 먼저 기술한 후

실행하였지만 똑같은 현상은 계속 발생하네요

원인을 알수가 없네요 ㅜㅜ

function authentication(){ //로그인 인증
	
		$this->load->library('form_validation');

		$this->form_validation->set_rules('id', '아이디', 'trim|required|min_length[3]|max_length[16]');
		
		$this->form_validation->set_rules('pass', '비밀번호', 'trim|required|min_length[5]|max_length[16]');
	
		
		if($this->form_validation->run() == FALSE){
			
			$this->load->view('member/login_v');
			
			$this->load->view('footer');	
						
			}else{
				$user=$this->Member_m->GetById(array('id'=>$this->input->post('id')));
			
		    	if($this->input->post('id') == $user->ur_id&&password_verify($this->input->post('pass',true), $user->ur_ps)){
		 				
				$loging=array('id'=>$user->ur_id, 'logind_in'=>true);
							
				$this->session->set_userdata($loging, true);
							
				$this->load->helper('url');
							
				redirect('/jm_c');
			
				}else{
			
				$this->session->set_flashdata('message', '아이디 및 비밀번호를 확인해주세요.');
						
				$this->load->helper('url');
						
				redirect('/auth_c/authentication');		

		}

	}
			
}