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 공격을 방지 할 수 있다. 변환되는 문자는 아래와 같다.
특수 문자 |
변환된 문자 |
&(앰퍼샌드) |
& |
""(겹따옴표) |
" |
''(홑따옴표) |
' |
<(미만) |
< |
>(이상) |
> |
구조(structure)
string htmlspecialchars ( string $string [, int $quote_style [, string $charset [, bool $double_encode ]]] )
만들면서 배우는 CodeIgniter 프레임워크
한빛미디어
집필서
판매중
- 저자 :변종원
- 출간 :2013-07-16
- 페이지 :432 쪽
- ISBN :9788968480263
- 물류코드 :2026
TAG :코드이그나이터 ,CodeIgniter ,PHP ,웹프레임워크
댓글 ( 4)
댓글 남기기