質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

Q&A

解決済

1回答

1668閲覧

Codeigniter3.Xでメールアドレスの入力チェックができない

hidepon

総合スコア206

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

0グッド

0クリップ

投稿2016/11/14 08:41

編集2016/11/16 08:04

CodeIgniterで開発を行っています。
入力チェックでemail がほかの項目と異なる挙動を示しています。
(下記はemailのみ抜粋)

<table class="table" id="tbl_member"> <tbody> <tr> <th>メールアドレス<span class="aster">※</span></th> <td><input type="text" name="email" id="email" /></td> </tr> <tr> <th>メールアドレス(確認)<span class="aster">※</span></th> <td><input type="text" name="email_conf" id="email_conf" /></td> </tr> </tbody> </table>

入力チェックのルール

public function index(){ //SESSIONデータ $session_array = array(); $session_array = $this->session->all_userdata(); //POSTデータ $post_array = array(); $post_array = $this->input->post(); $data = array(); //POSTデータが存在する if(!empty($post_array)){ //入力チェック if($this->validation_check()){ $data = array_merge($data,$post_array); $this->session->set_userdata($post_array); $data["title"] = "会員情報(新規登録)"; //HeaderのVIEW $this->load->view('/header/header_011',$data); $this->load->view('/common/parts_not_login',$data); $this->load->view('/member/confirm',$data); $this->load->view('/common/parts_footer',$data); } }else{ $data["title"] = "会員情報(新規登録)"; //HeaderのVIEW $this->load->view('/header/header_011',$data); $this->load->view('/common/parts_not_login',$data); $this->load->view('/member/input',$data); $this->load->view('/common/parts_footer',$data); } } //入力チェック private function validation_check(){ //SESSIONデータ $session_array = array(); $session_array = $this->session->all_userdata(); //POSTデータ $post_array = array(); $post_array = $this->input->post(); //検証ルール $this->form_validation->set_rules('email','メールアドレス',array('required','min_length[10]','max_length[128]','matches[email_conf]','callback_check_duplicate_email')); $this->form_validation->set_rules('email_conf','メールアドレス(確認)',array('required','min_length[10]','max_length[128]')); //入力チェック if($this->form_validation->run() == FALSE ){ $this->form_validation->set_error_delimiters('<span class="em">', '</span>'); //配列を結合する $data = array_merge($post_array,$data); $data["title"] = "会員情報(新規登録エラー)"; //HeaderのVIEW $this->load->view('/header/header_011',$data); $this->load->view('/common/parts_not_login',$data); $this->load->view('/member/input_error',$data); $this->load->view('/common/parts_footer',$data); return FALSE; }else{ return TRUE; } } //重複確認 public function check_duplicate_email(){ if($this->duplicate_check->Check_Duplicate_Email()){ $this->form_validation->set_message("check_duplicate_email","この%s は、すでに利用されています。"); return FALSE; } }

としているんですが、入力を行っても
emailが「メールアドレス欄は必須フィールドです。」
と表示されてしまいます。
どこがおかしいのでしょうか?
まったく見当がつかず困っています。
宜しくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

重複確認用のコールバックメソッドcheck_duplicate_emailの返り値が、重複ありならfalse、なしならnullで常に失敗になっていそうな気がします。メソッドの最後にreturn true;を足してみてください。

投稿2016/11/16 08:25

nnssn

総合スコア1221

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問