バリデーションの設定

入力した項目のチェックを行う。

Filename: config/autoload.phpに追加

$autoload['libraries'] = array('form_validation');

Filename: controllers/sendmail.php

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

class Sendmail extends CI_Controller {

	public function _set_validation() {
		$vconfig = array(
			array(
				'field' => 'name',
				'label' => 'お名前',
				'rules' => 'trim|required|max_length[20]|xss_clean'
			),
			array(
				'field' => 'mail',
				'label' => 'メール',
				'rules' => 'trim|required|valid_email'
			),
			array(
				'field' => 'subject',
				'label' => '題名',
				'rules' => 'trim|required|max_length[40]|xss_clean'
			),
			array(
				'field' => 'body',
				'label' => 'お取り合わせ',
				'rules' => 'trim|required|xss_clean'
			),
		);
		$this->form_validation->set_rules($vconfig);
		$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
	}

	public function index() {
		$data['title']='メールフォーム';
		$data['description']='メールフォームです。';
		$this->load->view('mailform',$data);
	}

	public function confirm() {
		self::_set_validation();
		if ($this->form_validation->run() == FALSE)
		{
			self::index();
		}
		else
		{
			$data['title']='メール確認';
			$data['name'] = htmlentities(
				$this->input->post('name'),ENT_COMPAT,"UTF-8"
				);
			$data['mail'] = $this->input->post('mail');
			$data['subject'] = htmlentities(
				$this->input->post('subject'),ENT_COMPAT,"UTF-8"
				);
			$data['body'] = nl2br(htmlentities(
				$this->input->post('body'),ENT_COMPAT,"UTF-8"
				));
			$this->load->view('confirm',$data);
		}
	}

	public function send() {
		$data['title']='お問い合わせ完了';
		$this->load->view('send',$data);
	}

}

Filename: views/mailform.php

<?php $this->load->view('elements/header');?>
<h1>メールでのお問い合わせ</h1>
<?php echo form_open('sendmail/confirm'); ?>
お名前<br />
<?php echo form_error('name'); ?>
<input id="name" type="text" name="name" value="<?php echo set_value('name', ''); ?>" /><br />
メール<br />
<?php echo form_error('mail'); ?>
<input id="mail" type="text" name="mail" value="<?php echo set_value('email', ''); ?>" /><br />
題名<br />
<?php echo form_error('subject'); ?>
<input id="subject" type="text" name="subject" value="<?php echo set_value('subject', ''); ?>" /><br />
お問い合わせ<br />
<?php echo form_error('body'); ?>
<textarea id="body" name="body"><?php echo set_value('body', ''); ?></textarea><br />
<input type="submit" value="確認画面へ">&nbsp;&nbsp;
<input type="reset" value="リセット"></br />
<?php echo form_close(); ?>
<?php $this->load->view('elements/footer');?>