2017-04-08 9 views
0

を設定していない、私は私のコントローラ上で、私はこれを持って、セットアップに私の検証ルールをしようと、しばらくの間立ち往生されています:CodeIgniterのフォームバリデーションはルール

public function login() { 
     $this->load->library('form_validation'); 
     $this->form_validation->set_rules(array(
      'field'=>'username', 
      'label'=>'Username', 
      'rules'=>'required' 
      )); 
     if (!$this->form_validation->run()) { 
      $this->json(array(
       'status'=>'error', 
       'errors'=>$this->form_validation->error_array(), 
       'test'=>$this->form_validation->get_options() 
       )); 
      return; 
     } 

     $user = $this->MUser->findByAttributes(array('username'=>$this->input->post('username'))); 
     if(!$user) { 
      $this->json(array(
       'status'=>'error', 
       'errors'=>array('username'=>'Username is not yet registered.') 
       )); 
      return; 
     } 

     $encpass = sha1($user->salt.$this->input->post('password')); 

     if ($encpass != $user->password) { 
      $this->json(array(
       'status'=>'error', 
       'errors'=>array('password'=>'Invalid username/password, please try again.') 
       )); 
      return; 
     } 

     $this->json(array(
      'status'=>'success', 
      'errors'=>'' 
      )); 
    } 

私はまた、拡張ベースのコントローラクラスと拡張フォーム検証を持っていますクラスは次のようである:

class AM_Controller extends CI_Controller { 
    public function __construct(){ 
     parent::__construct(); 
    } 

    public function render_template($view, $data = array(), $internal = false) { 
     $view_contents = $this->load->view($view, $data, true); 

     $header = $internal?$this->load->view('internal/header',$data,true):$this->load->view('external/header',$data,true); 
     $footer = $internal?$this->load->view('internal/footer',$data,true):$this->load->view('external/footer',$data,true); 

     $this->output->set_status_header(200,'ok'); 

     $this->load->view('general/template',array_merge(array(
      'header'=>$header, 
      'footer'=>$footer, 
      'content'=>$view_contents 
      ),$data)); 
    } 

    public function json($data) { 
     $this->output->set_status_header(200,'ok') 
        ->set_content_type('application/json') 
        ->set_output(json_encode($data)); 
    } 
} 

class AM_Form_validation extends CI_Form_validation { 
    public function __construct($options = array()) { 
     parent::__construct($options); 
    } 

    public function correct_captcha ($str) { 
     $this->set_message('correct_captcha','Invalid %s answer.'); 
     return $this->CI->session->userdata('captcha_answer') == $str; 
    } 

    public function get_options() { 
     return $this->_field_data; 
    } 
} 

をしかし、問題は、私はいくつかの値かどうかを入力した場合、私は、フォームの検証をテストしようとするたびに、それは関係なく、常にfalseを返します。このバグの原因は何ですか?ところで

は、私はまた、唯一の私のコントローラクラスのCI_Controllerを使用してみましたが、それでも運

+0

'AM_Controller'は 'index()'と同じクラスですか?そうでなければ、 'index()'とは何ですか?そしてそれはどのように呼び出されますか?表示されるコードがどのように適合するかを確認することは非常に難しいです。 – DFriend

+0

codeigniterでたくさんのAJAXを使用しているなら、この[AJAX library](https://github.com/joshcam/Codeigniter-jQuery-Ajax)に興味があります。 CIとうまく機能します。 – DFriend

+0

@DFriend yesすべてのコントローラがAM_Controllerを使用しています –

答えて

0

問題は、私のPOSTデータが私のサーバーに到達していなかったように思えるテストの時間に応じ、解決しません。私のhtaccessのフェイルセーフは、書き換えが実際に働いていたように、それは見せていたが、それはない、それは次のようにあった:適切に、働いていた

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /appmon/ 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 
<IfModule !mod_rewrite.c> 
    ErrorDocument 404 /appmon/index.php 
</IfModule> 

htaccessのもののない事をしようとした後。誰もありがとう

関連する問題