プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
codeigniterでのエラーチェックで困っています。
たとえばDBに登録されているニックネームと入力されたニックネームを突合せて合致しているレコードがあれば「すでに登録されています」とエラー表示したいです。
この場合、どのようにしたらよいでしょうか?
ユーザーガイドを見てもわかりません。
コールバック関数を使ってするのでしょうか?
そのとき、POSTデータはどのように渡せばいいのでしょうか?
よろしくお願いします。
はじめたばかりでわかりません。
下記は作成したコードです。

function index(){
--略--
コントローラ側
$this->form_validation->set_rules('email', 'メールアドレス', 'check_duplicate_address');
}
function check_duplicate_address(){
//メールの重複確認
if(!$this->member->check_duplicate_address($this->input->post('email'))){
$this->form_validation->set_message('duplicate_address', 'この%s は、"すでに利用されています。');
return FALSE;
}
}





//member のモデルの中の関数
//メールアドレスの重複確認
function check_duplicate_address($email){
$sql = 'select count(id) as cnt ';
$sql .= 'from member_info ';
$sql .= 'where email = ? ';
$sql .= 'and comp_flg = "1"';
$query = $this->db->query($sql, array($email));
foreach ($query->result() as $row){
if($row->cnt > 0){
return FALSE;
}else{
return TRUE;
}
}
}

A 回答 (1件)

すいません。

codeigniterは解りません。
それとクラスの全体像が見えず、中途半端な回答になります。

check_duplicate_address

がメソッドか関数か解らないのですが、重複になっていることはありませんか?

前半のcheck_duplicate_addressは後半check_duplicate_addressの戻り値で表示処理をしようとしてる風で。
後半のcheck_duplicate_addressはDB上に$emailの登録があるかどうかを判定しているようです。

まずは、それぞれの役割に合わせ名前を別名にしてみると問題解決の糸口になるのかも。

それと

「POSTデータ」がwebのformからのpostを意味しているなら、$_POSTで受け取ることができます。結果はハッシュなので、

$email = $_POST["e_mail"];

などで参照できると思いますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!