Codeigniter の基礎の基礎について分かったので、練習がてらにメールフォームを作ってみたわ。
まずはコントローラ部分
<?php
class Contact extends Controller
{
function index()
{
// ヘルパ関数・ライブラリ呼び出し
$this->load->helper(array('form', 'url'));
$this->load->library('validation');
// バリデーションルール設定
$rules['email'] = "trim|required|valid_email|xss_clean";
$rules['subject'] = "trim|required|max_length[20]|xss_clean";
$rules['message'] = "trim|required|max_length[100]|xss_clean";
$this->validation->set_rules($rules);
// バリデーションエラー時のフィールド名設定
// 詳しくは system/language/フォルダ名/validation_lang.php
$fields['email'] = 'メールアドレス';
$fields['subject'] = '件名';
$fields['message'] = 'メッセージ';
$this->validation->set_fields($fields);
// エラーメッセージを囲うタグを設定(デフォルトはpタグ)
$this->validation->set_error_delimiters(
'<div class="err">', '</div>');
// 検証エラーまたは初回アクセス時
if ($this->validation->run() == FALSE)
{
$this->load->view('contact/form');
}
// 検証OK
else
{
// emailライブラリ呼び出し
$this->load->library('email');
// 文字コード
$config['charset'] = 'utf-8';
// 設定初期化
$this->email->initialize($config);
// 差出人
$this->email->from(
$this->input->post('email'),
$this->input->post('email'));
// 送り先(自分宛)
$this->email->to('自分のアドレス');
// 件名
$this->email->subject($this->input->post('subject'));
// メッセージ
$this->email->message($this->input->post('message'));
$data = array();
// メール送信OK
if (@$this->email->send())
{
$data['result_message'] =
'メールは正しく送信されました。';
}
// メール送信エラー
else
{
$data['result_message'] = 'メール送信エラー';
}
$this->load->view('contact/send_result', $data);
}
}
}
?>
そして問い合わせフォーム部分。site_url() は urlヘルパー関数、form_open()、form_close() は formヘルパー関数。$this->validation うんぬんは…ソース見れば分かると思う。
<html>
<head>
<link rel="stylesheet" type="text/css" href="<?=site_url()?>css/contact.css" />
<title>問い合わせ</title>
</head>
<body>
<h1>問い合わせ</h1>
<?php if ($this->validation->error_string):?>
<div id="err-box">
<?=$this->validation->error_string; ?>
</div>
<?php endif;?>
<p>CodeIgniter で作ったメールフォーム</p>
<?=form_open('contact')?>
<dl>
<dt>メールアドレス</dt>
<dd><?=$this->validation->email_error?><input type="text" name="email" value="<?=$this->validation->email?>" class="ipt-bg" /></dd>
<dt>件名</dt>
<dd><?=$this->validation->subject_error?><input type="text" name="subject" value="<?=$this->validation->subject?>" class="ipt-bg" /></dd>
<dt>メッセージ</dt>
<dd><?=$this->validation->message_error?><textarea name="message"><?=$this->validation->message?></textarea></dd>
</dl>
<input type="submit" value="送信" />
<?=form_close()?>
</body>
</html>
で、送信結果ビュー。anchor() は urlヘルパーの関数ですよ。
<html>
<head>
<link rel="stylesheet" type="text/css" href="<?=site_url()?>css/contact.css" />
<title>問い合わせ</title>
</head>
<body>
<h1>問い合わせ</h1>
<p><?=$result_message?></p>
<p><?=anchor('contact', 'もう一度'); ?></p>
</body>
</html>
これじゃあ説明足んねーよー。わかんねーよー。バーカバーカ。って方は、実際にメールフォームをいじって観察しましょう。メールは送信されないようにしてあるのでお気軽にどうぞ。
スポンサーサイト