Codeigniter

 

 

 

 

test.php

<?php defined('BASEPATH') OR exit('No direct script access allowed');

/*
기타 테스트용 컨트롤러
*/
class Test extends CI_Controller{

	function __construct()
	{
		parent::__construct();
	}

	//주소에서 메서드가 생략되었을 때 실행되는 기본 메서드
	
	public function index()
	{
		$this->forms();
	}


/*
	사이트 헤더, 푸터가 자동으로 추가 된다.

	*/
	public function _remap($method)
	{
		//헤더 include
		$this->load->view('header_v');

		if(method_exists($this, $method))
		{
			$this->{"{$method}"}();
		}

		//푸터 include
		$this->load->view('footer_v');
	}



	//폼 검증 테스트
	public function forms()
	{
		// $this->ouput->enable_profiler(TRUE);

	 		//폼 검증 라이브러리 로드
			$this->load->library('form_validation');


			//폼 검증할 필드와 규칙 사전 정의
			$this->form_validation->set_rules('username', '아이디', 'required');
			$this->form_validation->set_rules('password', '비밀번호', 'required');
			$this->form_validation->set_rules('passconf', '비밀번호 확인', 'required');
			$this->form_validation->set_rules('email', '이메일', 'required');

			if($this->form_validation->run() ==FALSE)
			{
				//폼 검증이 실패했을 경우 또는 일반 입력 페이지
				$this->load->view('test/forms_v');	
			}
			else
			{
				//폼 검증이 성공했을 때 보여줄 페이지
				$this->load->view('test/form_success_v');
			}
		

	}


}

 

forms_v.php

<?php  echo validation_errors(); ?>

 

	
	<article id="board_area">
		<header>
			<h1></h1>
		</header>

	<?php  echo validation_errors(); ?>		
	
		<form method="post" class="form-horizontal">
			<fieldset>
				<legend>폼 검증</legend>
				<div class="control-group">
					<label class="control-label" for="input01">아이디</label>
					<div class="controls">
						<input type="text" name="username" class="input-xlarge" id="input01" >
						<p class="help-block">아이디를 입력하세요.</p>
					</div>
				</div>
				<div class="control-group">
					<label class="control-label" for="input02">비밀번호</label>
					<div class="controls">
						<input type="text" name="password" class="input-xlarge" id="input02" >
						<p class="help-block">비밀번호를 입력하세요</p>
					</div>
				</div>
				<div class="control-group">
					<label class="control-label" for="input03">비밀번호 확인</label>
					<div class="controls">
						<input type="text" name="passconf" class="input-xlarge" id="input03" >
						<p class="help-block">비밀번호를 한번 더 입력하세요</p>
					</div>
				</div>

				<div class="control-group">
					<label class="control-label" for="input04">이메일</label>
					<div class="controls">
						<input type="text" name="email" class="input-xlarge" id="input04" >
						<p class="help-block">이메일을 입력하세요</p>
				</div>
				

		<div><input type="submit" value="전송" class="btn btn-primary" /></div>

		</form>
	</article>

 

 

그림 5-3 은 아무런 데이터 입력 없이 전송 버튼을 눌렸을 때의 결과 화면입니다.  "The 아이디 field is required" 메시지는 폼 에러 메시지가 

기본이 영어로 되어 있어서 나오는 것입니다.

system/languages/english 디렉토리의 form_validation_lang.php 파일을 application/languages/korean 으로 복사하고 영문으로 된 문장을 

한글로 수정한 후 application/config/config.php 파일의 $config['language']= 'english' ; 항목을 kroean 으로 수정하면 한글로 된 에러

메시지를 사용할 수 있습니다.

 

 

 5.2 검증 규칙 설정

 검증 규칙은 원하는 순서대로 원하는 만큼 선언할 수 있습니다. callback 함수를 지원하여 데이터 중복 여부 체크 등 전처리를 할 수도 

있습니다.

 

검사 규칙은 set_rules() 함수를 사용해 설정합니다.

 $this->form_validation->set_rules(); 

 

set_rules() 함수는 세 가지 파라미터를 사용합니다. 첫 번째 파라미터는 필드 이름이고 뷰의 폼에서 설정한 필드 이름과 일치해야 합니다.

두 번째 파라미터는 필드 이름에 대해 에러 메시지에 표시할 내용입니다. 예를 들어 필드 이름이 'id' 라면 '아이디' 라고 선언하고, 에러 

메시지에서는 '아이디' 는 필수 필드입니다. 라고 표시됩니다. 세 번째 파라미터에 폼 검증에 필요한 검사 규칙을 선언합니다 폼 검증에는 

required,   min_length,     max_length,         matches,          valid_email 등이 사용 됩니다.

 

 

 

 

 

 

 

5.2.3 기타

CodeIgniter 내부에 설정된 규칙 이외에 PHP 함수 중 하나의 파라미터를 받는 함수는 모두 규칙에 사용할 수 있습니다.

(예를 들면 trim, md5, htmlspecialchars 등) . 그리고 보안 함수 중 하나인 xss_clean 도 사용할 수 있습니다.

 

	//폼 검증 테스트
	public function forms()
	{
		// $this->ouput->enable_profiler(TRUE);

	 		//폼 검증 라이브러리 로드
			$this->load->library('form_validation');


			//폼 검증할 필드와 규칙 사전 정의
			$this->form_validation->set_rules('username', '아이디', 'trim|required|min_length[5]|max_length[12]|htmlspecialchars');
			$this->form_validation->set_rules('passconf', '비밀번호 확인', 'trim|required|md5|htmlspecialchars');
			$this->form_validation->set_rules('password', '비밀번호', 'trim|required|matches[passconf]|md5|htmlspecialchars');
			$this->form_validation->set_rules('email', '이메일', 'trim|required|valid_email|htmlspecialchars');

			if($this->form_validation->run() ==FALSE)
			{
				//폼 검증이 실패했을 경우 또는 일반 입력 페이지
				echo $this->input->post("password", TRUE);
				echo "<br>";
				echo $this->input->post("passconf", TRUE);
				$this->load->view('test/forms_v');	
			}
			else
			{
				//폼 검증이 성공했을 때 보여줄 페이지
				$this->load->view('test/form_success_v');
			}
		

	}

 

 

 

 htmlspecialchars (PHP4, PHP5)

 

이 함수는 문자열에서 특정한 특수 문자를 HTML 엔티티로 변환한다. 이함수를 사용하면 악성 사용자로 부터 XSS 공격을 방지 할 수 있다. 변환되는 문자는 아래와 같다.

 

 

 특수 문자

 변환된 문자

&(앰퍼샌드)

 &amp;

""(겹따옴표)

 &quot;

''(홑따옴표) 

 &#039;

<(미만) 

 &lt;

>(이상)

 &gt;

 

 

 구조(structure)

 


 

string htmlspecialchars ( string $string [, int $quote_style [, string $charset [, bool $double_encode ]]] )

 



 

 

 

미리보기

만들면서 배우는 CodeIgniter 프레임워크

한빛미디어

 

집필서

 

판매중

페이스북 퍼가기 구글+ 퍼가기 트위터 퍼가기

  • 저자 :변종원
  • 출간 :2013-07-16
  • 페이지 :432 쪽
  • ISBN :9788968480263
  • 물류코드 :2026

TAG :코드이그나이터 ,CodeIgniter ,PHP ,웹프레임워크

 

 

 

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

독서당 개가 맹자왈 한다 , 어리석은 사람도 늘 보고 들은 일은 능히 잘할 수 있게 된다는 말.

댓글 ( 4)

댓글 남기기

작성