fc2ブログ

price-change:blog

色んな情報テンコモリ

CodeIgneter で メールフォームを作ってみるの巻

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>

これじゃあ説明足んねーよー。わかんねーよー。バーカバーカ。って方は、実際にメールフォームをいじって観察しましょう。メールは送信されないようにしてあるのでお気軽にどうぞ。

スポンサーサイト



テーマ:PHP - ジャンル:コンピュータ

トラックバック

トラックバックURLはこちら
http://pricewave.blog110.fc2.com/tb.php/14-a2622b09
この記事にトラックバックする(FC2ブログユーザー)