CI 묻고 답하기

제목 form_valiation 에레메세지와 javascript의 alert 메세지 어떤걸 사용하시나요?
글쓴이 정수리 작성시각 2016/06/14 13:20:06
댓글 : 12 추천 : 0 스크랩 : 0 조회수 : 19988   RSS

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

 

예전 검증하는거에 대해 질문을 올려서 많은 선배님들께서

javascript를 통한 유효성 검증와 form_validation을 통한 검증 1,2차 검증을

모두 사용하라고 하셔서 view에서 javascript를 통한 유효성 검사와 controller에서는 form_validation을 통해 검사를

모두 사용하였으며 정상적으로 나타나는지도 확인하였습니다.

이것을 사용하면서 궁금증이 생긴것이 javascript에서 잘못입력하였을 경우 alert메세지를 통해

잘못입력되었다는 메세지를 출력을하고 form_validation에서도 규칙과 다르면 에러메세지를 출력합니다

그렇기에 둘중 어느 메세지를 사용하시는지 알고 싶습니다.

javascript 유효성 검증과 form_validation을 통한 검증 모두 사용할 경우 form_validation 검증에서 나오는 에러메세지는 거이

출력되지 않기는 합니다. 먼저 javascript alter메세지가 출력이 되기때문에

그렇다면 굳이 form_validation의 출력메세지를 출력하는 코드를 입력할 필요가 있을까요?

 

두번째 질문으로는 form_validation을 사용하여 에러메세지가 출력되지않는다고 여러번 게시글을 올렸는데 그때는 제가 너무 두서가 없이

올린것 같아 다시 정리하여 질문을 올리게되었습니다.

에러메세지가 출려되는 페이지의 경우 controller에서

if($this->form_validation->run()== FALSE){
			$this->load->view('head');
			$this->load->view('member/Join');
			$this->load->view('footer');

 }

이렇게 load-view를 통해 해당페이지를 로드시키면 form_validation의 에러메시지 출력코드가 작성되어 페이지의 경우 에러메시지가 잘출려됩니다.

하지만

if($this->form_validation->run()==FALSE){
			$this->load->helper('url');
			redirect('/auth/mypage');

}

페이지를 로드시키지 않고 url헬퍼를 통해 리다이렉션 시킬 경우 에러메시지가 출력이 되지않습니다(출력은 안되나 검증이 됩니다)

그래서 /auth/mypage에서 form_validation을 로드시키고 규칙을 설정하였지만 리다이렉트를 통해 페이지로가면 에러메시지가 출력되지않고

리다이렉트가 아닌 다른경로 접속하였을 경우 에러가 발생합니다;

이럴땐 어떻게 해야되나요?

긴글읽어주셔서 감사합니다 ㅜ.ㅜ

 다음글 routes.php 설정 문의입니다. (1)
 이전글 하위 폴더에 CI 설치 (1)

댓글

뫄뫄잉뿌 / 2016/06/14 13:37:22 / 추천 0
저는 form_validation을 통해 검증 후 입력되지 않으면 화면단에서 echo form_error를 통해 입력하라는 메시지 띄웁니다!
kaido / 2016/06/14 13:38:51 / 추천 0

... 당연한 현상이 아닌가 싶습니다

redirect 를 거는 순간 폼 검증 페이지에서 나와서 다른 페이지로 가버리니 에러메세지가 나오지 않습니다.

또한 javascript 의 검증과 ci 에서의 검증은 서로 다릅니다.

ci 에서 검증을 한다고 javascript 에서 연동이 되어 검증이 되거나 하지 않습니다.

 

javascript 검증의 역할과 php 검증의 역할은 서로 다릅니다.

 

javscript 검증은 폼 검증 순수한 능력 보다는, 입력 값에 대한 기본적인 ux를 직관적으로 나타내기 위한 1차 필터라고 보셔야합니다.

ci 의 검증은 의미 그대로 정말로 제대로 된 값을 보냈는지에 대한 검증을 합니다.

 

굳이 작업을 한다면 2가지 전부 나타나는것이 맞습니다.

javascript 는 어디까지나 유저에게 직관적인 표현이며, 얼마든지 위변조가 가능하기에 신뢰가 가는 검증 데이터는 아닙니다.

정수리 / 2016/06/14 13:49:06 / 추천 0

@kaido

아 그렇군요;;

그렇다면 redirect가 아닌 뷰페이지를 로드해서 해야될까요?

if($this->form_validation->run()==FALSE){
            $this->load->helper('url');
            redirect('/auth/mypage');
이부분을
$this->load->view('head');
            $this->load->view('member/mypage');
            $this->load->view('footer');
이렇게 변경 후 mypage.php에서

<?php echo form_error('id');?> 작성을 해준후 실행하면

<?php echo form_error('id);?>에서 에러가 발생합니다,

Call to undefined function form_error() 

이에러가 발생합니다;

계속 해결이 되지않아 메뉴얼도 읽어보고 ci책도 읽어보았습니다;

 

 

뫄뫄잉뿌 / 2016/06/14 13:59:42 / 추천 0
굳이 load->view로 안보내도 폼검증 후 해당 화면에서 에러메시지 띄워줍니다
정수리 / 2016/06/14 14:03:02 / 추천 0

@뫄뫄잉뿌

해당뷰페이지에 <?php echo form_error('id);?>이 코드가 작성되어 있어야 에러가 출려되는거 아닌가요?

http://www.ciboard.co.kr/user_guide/kr/libraries/form_validation.html

메뉴얼에는 뷰페이지 에서

<?php echo validation_errors(); ?>

에러 출력 코드가 작성되어있어서;;

뫄뫄잉뿌 / 2016/06/14 14:16:54 / 추천 0

둘다 되는걸로 알고 있습니다


echo form_error('검증할 field','<font color=red>','</font>');
echo validation_errors('<span class="error">', '</span>');

form_error와 validation_errors 는 비슷한 역할을 합니다.
다만 form_error는 검증할 field를 선택해서 뿌려주는 것이고 
validation_errors는 검증정보에 있는 모든 정보에 대해 확인해줍니다.
http://www.ciboard.co.kr/user_guide/kr/helpers/form_helper.html
에서 ctrl+f 로 form_error 와 바로 그 밑에 validation_errors 확인해주세요~

정수리 / 2016/06/14 14:23:37 / 추천 0

@뫄뫄잉뿌

답변감사합니다.

말씀하신 코드 모두 사용가는한데 위치는 뷰페이지에 위치 해야되는거아닌가요?

메뉴얼에서 두개의 함수를 찾아보았는데 정확히 위치는 어디라고 명시는 안되어있고 예제는 모두 뷰 페이지에서 작성이 되어있길래;

제대로 에러메시지를 출력하는 페이지와 똑같이 코딩을 하였는데 한페이지는 에러메시지가 출력이 되지않고;;

제가 어떤걸 놓치는듯한 기분인데;; 도저히 어떤건지 감이 안잡히네요;;

뷰페이지에서 echo form_error('필드이름')을 하였을 경우 계속 Call to undefined function form_error()

이 에러가 발생하는데 왜 발생하는지 알수 있을까요??;

정상적으로 실행되는 페이지는 저런 애가 발생하지 않는데 ㅜ.ㅜ

뫄뫄잉뿌 / 2016/06/14 15:13:26 / 추천 0

뷰 페이지에서 작성되어야 하는거 맞습니다. 헬퍼나 라이브러리 로드 한건 맞죠..?

 

정수리 / 2016/06/14 15:56:39 / 추천 0

@뫄뫄잉뿌

네 ㅜ.ㅜ

$this->load->library('form_validation');
		$this->form_validation->set_rules('email', '이메일', 'trim|valid_email');
		$this->form_validation->set_rules('phone', '연락처', 'trim');
		$this->form_validation->set_rules('zipcode', '우편번호','trim');
		$this->form_validation->set_rules('add1', '주소', 'trim');
		$this->form_validation->set_rules('add2', '상세주소','trim|required');
		
		if($this->form_validation->run()==FALSE){
			$this->load->view('session');
			$this->load->view('head2');
			$this->load->view('/member/mypage');
			$this->load->view('footer2');
			           

컨트롤러가 코드가 위처럼 되있구요 ㅜㅜ.

뷰페이지는

	<form id="modify" action="/auth/modify" method="post">
				아이디 <input type="text" name="id"  size="17" value="<?=$profile->ur_id?> " readonly/></br>
				이 름 <input type="text" name="name" size="5" value="<?=$profile->ur_na?>" readonly/> </br>
				이 메일 <input type="email" name="email"  id="email" size="20" value="<?=$profile->ur_em?>"/><?php echo form_error('email');?></br>
				주 소 <input type="text" name="zipcode" id="zipcode"  size="10" value="<?=$profile->ur_zip?>">
					<input type="button" onclick="sample6_execDaumPostcode()"  value="우편번호 찾기"><br>
					<input type="text" name="add1" id="add1"  size="60" value="<?=$profile->ur_ad1?>" />
					<input type="text" name="add2" id="add2" value="<?=$profile->ur_ad2?>" /><br>
				연락처 <input type="text" name="phone" id="phone" size="13" value="<?=$profile->ur_ph?>"/><br>

이렇게 코딩되었습니다 ㅜ.ㅜ <?php echo form_error('email');?> 에러가 발생하네요 ㅜㅜ,

정말 해결하고싶습니다..

 

한대승(불의회상) / 2016/06/14 16:05:09 / 추천 0

자바스크립트에서 검증이 되지않고 잘못된 데이터가 들어 오는 경우는 거의가 크래킹 인 경우가 아닐까요? ^^

저의 경우 서버에서 보내는 메시지는 간단히 echo로 처리 합니다.

정수리 / 2016/06/14 16:09:38 / 추천 0

@한대승

답변감사합니다

제가 아직 많이 부족해서 그런지 echo로 처리하신다는 어떤방법으로 하시는건가요?

제가 아는 form_validation 에러 메세지 출력은 뷰페이지에서 validation_errors() 하고 form_errors()밖에 없어서;

뫄뫄잉뿌 / 2016/06/14 16:17:39 / 추천 0
혹시 모르니 $this->load->helper('form'); 도 controller단에 넣어보시겠어요..?