<?php class Controllers_login extends CI_Controller{ //コンストラクタの定義 public function __construct(){ parent::__construct(); $this->load->database(); $this->load->library('session'); $this->load->helper('url'); $this->load->helper('form'); //$this->load->library('form_validation'); } public function index(){ //メインページに移行 $this->load->view('views_mainpage'); } public function login(){ //ログイン画面で送信ボタンが押されたかを確認する。 if(!isset($_POST['send'])){ $this->load->view('views_login'); } else{ //送信ボタンが押されたことが確認できた場合 $this->load->model('models_login'); $this->load->library('form_validation'); $this->form_validation->set_rules('email','mailaddress','required|valid_email', array('required'=>'メールアドレスが入力されていません。','valid_email'=>'無効なメールアドレス形式です。') ); $this->form_validation->set_rules( 'password','mypassword','required|callback_user_check',//|callback_user_check array( 'required'=>'パスワードが入力されていません。', ) ); public function user_check($password){ $email=$this->input->post('email'); $this->load->model('models_login'); //ログインチェックをする。データベースに存在するか。 $is_login=$this->models_login->checkLogin($email,$password);//!!! //is_login = checkLogin(pwd,mail) //boolean //データベースに組み合わせが存在しない場合 if($is_login===FALSE){ $this->form_validation->set_message('user_check','正しいデータを入力'); return FALSE; } else { return TRUE; } }
validationチェックの質問です。
「$this->form_validation->set_rules(
'password','mypassword','required|callback_user_check',//|callback_user_check
array(
'required'=>'パスワードが入力されていません。',));」
ここの部分で、requiredだけならば、パスワードを入力し無かった時にパスワードが入力されていませんと表示されるのですが、callbackを追加すると、空白の場合でも正しいデータを入力とだけ表示され、requirenの部分が表示されません。これはなぜなのでしょうか。コードは質問に関係ない部分は省略しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。