コードイグナイター フォーム入力とメール送信機能

コードイグナイター

フォームに入力をして送信ボタンを押す。

コントローラで受け取り、バリデーション。さらに、グーグルを経由してメール送信を送ります。

つまり、メールフォームを作っていきます。

 

■流れ

・PHPで基本的な流れをみる

・send_mail()関数について知る

・メールフォームの作り方

・バリデーション

・XAMPPでの送信方法をについて学ぶ

・グーグル経由でsendmail()

・アプリパスワードを発行する

 

 

コードについて

フォームを作る時に、考えておくことは、以下の事です。

 

■Controller/contact.php

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

class Contact extends CI_Controller {

public function __construct(){
parent::__construct();
$this->load->database();

$this->load->helper(array('form','url'));
$this->load->library('form_validation');
$this->load->helper('array');

/*Emailを使うのに書く*/
$this->load->library('email');
}

public function index($param=null){


$this->load->helper(array('form','url'));
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<p class="red">', '</p>');

//バリデーションのルールを作る
$this->form_validation->set_rules('name', '名前', 'required|max_length[10]',array('required' => '%s を入力してください'));
$this->form_validation->set_rules('address', '住所', 'required|max_length[40]',array('required' => '%s は必須です。'));
$this->form_validation->set_rules('tel', '電話番号','regex_match[/^0[0-9]{1,4}-[0-9]{1,4}-[0-9]{3,4}\z/]','required',array('required' => '%s は必須です。'));

$this->form_validation->set_rules('email', 'メールアドレス','required',array('required' => '%s は必須です。'));
$this->form_validation->set_rules('comment_txt', 'コメント', 'required',array('required' => '%s は必須です。'));

/*バリデーションの*/

if ($this->form_validation->run() == FALSE){
$this->load->view('contact/index.php');

}else{/*成功した時*/

/*set_valueはバリデーションを経た値のみOk*/
$name=set_value('name');
$address=set_value('address');
$tel=set_value('tel');
$email=set_value('email');
$comment_txt=set_value('comment_txt');

$options_select=$this->input->post('toiawase_naiyo');
/*$options_select=set_value('toiawase_naiyo');/*これだとvalueの値になってしまう*/


$this->email->from('makio88@gmail.com', 'Hironori Maki');
$this->email->to('maki@plus-work.jp');
/*$this->email->cc('maki@plus-work.jp');
$this->email->bcc('maki@plus-work.jp');*/

$this->email->subject('テスト送信をしています');

$mail_body = 'お客様からメールが届いています。'."\n"
.'■■問い合わせ内容■■'."\n"
.'名前:'.$name. "\n"
.'住所:'.$address. "\n"
.'電話:'.$tel. "\n"
.'メール:'.$email. "\n"
.'内容:'.$options_select. "\n"
.'コメント:'.$comment_txt.'になります';


$this->email->message($mail_body);
if($this->email->send()){
echo "Your email was sent.";
$this->load->view('form/formsuccess');
}else{

echo $this->email->print_debugger();
$this->load->view('contact/index.php');
} }}}

 

大まかには、こんなイメージです。

 

■View/contact/index.php (ビューにcontactフォルダを作り、ファイルを作っています)

<!--どこに飛ばすか指定 -->
<?php echo form_open('contact'); //コントローラへ飛ばす。?>

<input type="hidden" name="act" value="_input">
<p class="lt"><label for="name">お名前<span class="red">※</span></label></p>
<div class="form_box">
<p class="fbox01">
<input type="text" name="name" id="name" required placeholder="10文字以内で入力" value="<?php echo set_value('name'); ?>" /><?php echo form_error('name'); ?>
</p>
</div>

<p class="lt"><label for="address">住所</label></p>
<div class="form_box02">
<p class="fbox02">
<input type="text" name="address" id="address" required placeholder="住所を入力してください" value="<?php echo set_value('address'); ?>" /><?php echo form_error('address'); ?>
</p>
<p class="zirei">例:東京都品川区5-5-15 虎ノ門ビル7F</p>
</div>

<p class="lt"><label for="tel">電話番号<span class="red">※</span></label></p>
<div class="form_box">
<p class="fbox01">
<input type="text" name="tel" id="tel" required placeholder="090-1234-5678" value="<?php echo set_value('tel'); ?>" /><?php echo form_error('tel'); ?>
</p>
<p class="zirei">090-1234-5678(ハイフンが必要)</p>
</div>

<p class="lt"><label for="email">メールアドレス<span class="red">※</span></label></p>
<div class="form_box02">
<p class="fbox02">
<input type="text" name="email" id="email" placeholder="info@gmail.com" value="<?php echo set_value('email'); ?>" /><?php echo form_error('email'); ?>
</p>
</div>

<p>お問い合わせ内容<span class="red">※</span></p>
<div class="form_box03">
<p class="fbox3">
<?php
$options = array(
'select' => '選んでください',
'ご相談・質問' => 'ご相談・質問',
'無料診断' => '無料診断',
'資料請求' => '資料請求',
);
echo form_dropdown('toiawase_naiyo', $options,'select');
?>

</p>
</div>

<p>ご意見・ご相談</p>
<div class="textbox">
<?php
echo form_error('comment_txt');
//エラー表示が出ない^^;
$userts_comment['name'] = 'comment_txt';
//$userts_comment['row'] = '4';
//$userts_comment['cols'] = '40';
$userts_comment['value'] = set_value('comment_txt');
$userts_comment['placeholder'] = 'コメントを書いてください';
$userts_comment['required'] = 'required';
echo form_textarea($userts_comment); ?>

</div>

<p>&nbsp;</p>
<p align="center">
<input id="submit_button" type="submit" name="submit" value="送信する">
</p>
</form>

 

分からない場合、質問してください!!

 

 

Xampp環境でメール送信を行う

Postfixは使っていません。

XAMPPインストール時に、付属しているソフトを利用します。

 

 

「php.ini」ファイルを編集します。

 

sendmail_path ="\"C:\xampp\sendmail\sendmail.exe\" -t"

smtp_server=smtp.gmail.com
auth_username=自分のGmailアドレスを入れる
auth_password=アプリパスワード
smtp_ssl=auto

 

こんな感じです。

アプリパスワードは下で解説します。

 

【参照】

詳しくはこちらを参照してください>>

 

 

sendmail.iniの設定

sendmail.iniの編集

 「sendmail.exe」と同じ場所にある「sendmail.ini」ファイルを、メモ帳などで開きます。

 

smtp_server=smtp.gmail.com

smtp_port=587

auth_username=自分のGmailアドレスを入れる
auth_password=アプリパスワード

 

 

1.「smtp_server=」→メールサーバを指定します。

2.「;smtp_port=25」→「smtp_port=587」

3.「;auth_username= ;auth_password=」→自身のアカウントとパスワード

 

この3つを設定する必要があります。

 

グーグルの設定(アプリパスワードを発行)

sendmailを安全性の高いアプリにしてあげる必要があります。これをしないと、グーグルにはじかれてしまいます。

必要なのは、グーグルのアカウントです。

 

 

1.二段階認証をする

2.アプリパスワードを作成する

3.コピーして使う

 

という流れになります。

 

 

二段階認証プロセスを「オン」にします。

 

1.アプリを選択

2.その他➡send_mailと打ち込む

3.パスワードが生成

4.パスワードをコピーして使う

 

 

参照

【参照】

【コードイグナイター】emailクラスを使う>>

【sendmail】gmailアカウントの設定で安全性の低いアプリ(sendmail)を登録して、安全性を上げる>>

【Postfix】PHPのmail関数で送信できないときに確認したいPostfixの設定>>

【基本】Xamppのsendmailとgmailでメール送信フォームを作りましょう>>

 

これらを確認すると作れるようになります。

 

 

ご質問などありましたら、お気軽にご相くださいませ

 

 

 

コードイグナイターの勉強方法

 

 

この記事を読んだ人は、こんな記事も読んでいます

 

SEO対策の基本 外部要因とは?

SEO対策の基本的である、外部要因とは何か?

SEO対策をするなら絶対に知っておきたい、基本知識です。

 

売れるサイトを作るのに知って起きたい知識

サーチエンジンマーケティングという言葉をご存知でしょうか?

ホームページで商品やサービスを売る時に知っておきたいマーケティング

についてご紹介いたします。

seo対策をするメリットとは

SEO対策をする5つのメリットとは?

なぜ上位表示させることが大事なのか?なぜSEO対策をする必要があるのか

についてご紹介させていただきます。

 

内部要因とは

SEO対策の内部要因とは?

上位表示させるためには、内部要因について知っておくことも大事です。

キーワードを上位表示させるために必要なのは、ソースコードを最適化することです

内部要因の対策について知りたい方はこちらへ

 

キーワード対策をするまえに

キーワード対策をする前に

そのキーワード対策。ちょっと待ってください。

そのまま対策をすると、必ずお金を損してしまいます。個人事業主や中小企業は

そんな大きなキーワードで対策をしてはいけません。

広告費用が高くなる理由とは

広告費用が高くなる本当の理由とは?

売れないサイトに集めていませんか?広告費用がかかるわりには

お問い合わせが少ない・・・と感じる方は多いはずです。

購入率の悪いサイトに集客をしている可能性があります。

 

 

 

 

【SEO対策・web広告・webコンサルティングのプラスワーク対応エリアについて】

プラスワークでは、東京、神奈川、千葉、埼玉を中心に全国でwebコンサルティング、SEO対策、ホームページの更新、ホームページのリニューアル運営代行をしております。売上アップをお考えならお気軽にご相談ください。

 

【SEO対策・web広告・webコンサルティングのプラスワーク 対応地域】

北海道 [ 北海道 ]

東北  [ 青森 | 岩手 | 山形 | 福島 | 秋田 | 宮城 ]

関東  [ 東京 | 埼玉 | 千葉 | 茨城 | 栃木 | 群馬 | 神奈川 ]

甲信越 [ 山梨 | 長野 | 新潟 ]

北陸  [ 石川 | 福井 | 富山 ]

東海  [ 愛知 | 静岡 | 岐阜 | 三重 ]

近畿  [ 大阪 | 兵庫 | 京都 | 滋賀 | 奈良 | 和歌山 ]

中国  [ 島根 | 山口 |鳥取 | 広島 | 岡山 ]

四国  [ 徳島 | 香川 | 愛媛 | 高知 ]

九州  [ 福岡 | 佐賀 | 長崎 | 熊本 | 大分 | 宮崎 | 鹿児島 ]

プラスワークでは全国でSEO対策、ホームページ更新、制作をしております。中小企業専門SEO対策・ホームページ更新制作会社、ダイレクト レスポンス マーケティング、ウェブ マーケティング、マーケティング 分析、口コミのよいSEO対策会社をお探しならプラスワークにお任せくださいませ。

 

 

【コンテンツ】

トップへ

更新レスキュー

料金について

制作実績

お客様の声

よくある質問

会社概要

お問い合わせ

【更新レスキュー】

ライトコース

ゴールドコース

プラチナコース

 

【その他】

ニュース

メルマガ登録

特別資料プレゼント

相互リンク募集中

【課題から探す】

ホームページの課題

SEO対策とは

SEO対策がダメな理由

上位表示されない理由

相互リンクとは

順位が落ちてしまう原因

 

 

フェイスブック  ツイッター