2017-10-17 3 views
0

こんにちは私は他人を見ようとしましたが、なぜ私のコードとソリューションに基づいて動作していないのか分かりません。フォームの検証を無効にする(コメントアウトする)と、表示する投稿データを取得できます。しかし、それが残っていると、常にfalseになり、投稿データは表示されません。私は自動これは私がそれのように動作するようになった唯一の方法だったcodeigniterフォームの検証は常に偽です

<?php echo form_open('users/login'); ?> <!-- the action is the controller users and the function register --> 
    <div class="row"> 
     <div class="col-md-4 col-md-offset-4"> 

      <div class="my-input-control-100p"> 
      <div class="form-group"> 
       <input type="text" name="username" class="form-control" placeholder="Enter Username" required autofocus> 
      </div> 
      </div> 

      <div class="form-group"> 
       <input type="password" name="password" class="form-control" placeholder="Enter Password" required autofocus> 
      </div> 

      <button type="submit" class="btn btn-primary btn-block">Login</button> 

      <br> 

      <div class="center_login"> 
       <small><a href="<?php echo site_url("pages/view/register") ?>">Register here</a> </small> 
       <br> 
       <br> 
       <small><a href="<?php echo site_url("pages/view/forgot") ?>">Forgot Password or User Name</a> </small> 
      </div> 
     </div> 
    </div> 
<?php echo form_close(); ?> 
+0

プレーンテキストのパスワードは、パスワードベリファイアとして保存する必要がありません。ハッシュ関数を使用するだけでパスワードベリファイアを保存するだけでは不十分で、単に塩を追加するだけでセキュリティを向上させることはほとんどありません。代わりに、約100msの間、ランダムな塩でHMACを繰り返し、塩をハッシュで保存します。 'PBKDF2'、' Rfc2898DeriveBytes'、 'password_hash'、' Bcrypt'、 'passlib.hash'などの関数を使うのが良いです。要点は、攻撃者が無差別にパスワードを見つけるのにかなりの時間を費やすようにすることです。 – zaph

+0

ロジックをフリップさせて、ユーザー名とパスワードを印刷することができます($ this-> form_validation-> run()!== false){) – tomcc84

+0

これは、開発者の利便性ではなく、 。パスワードは決してプレーンテキストでサーバーに保存しないでください。 PHPでは['password_hash'](http://php.net/manual/en/function.password-hash.php)と[' password_verify'](http://php.net/manual/en/function。 password-verify.php)、ペアは安全で使いやすいです。 – zaph

答えて

0

ビュー形式でコントローラ

// Log in user 
     public function login(){ 
      $data['title'] = 'Sign In'; 

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

       $this->load->library('form_validation'); 


      // validate rules for login cedentials 
      $this->form_validation->set_rules('username', 'Username', 'required'); 
      $this->form_validation->set_rules('password', 'Password', 'required'); 

      // if login credentials are not entered (validation is false) show login view 
      if(!$this->form_validation->run()){ 
       $this->load->view('templates/header'); 
       $this->load->view('users/login', $data); 
       $this->load->view('templates/footer'); 
       echo "Not valid!"; 
       echo "<br>"; 
       print_r($this->input->post()); 
       echo $this->input->post('username'); 
       echo validation_errors(); 
       echo $this->form_validation->run(); 


      } else { 

       // Get username 
       $username = $this->input->post('username'); 
       // Get and encrypt the password 
       $password = $this->input->post('password'); 

       // Login user with model (database) 
       $user_id = $this->user_model->login($username, $password); 

       if($user_id){ 
        // Create session 
        $user_data = array(
         'user_id' => $user_id, 
         'username' => $username, 
         'logged_in' => true 
        ); 

        // set session user data 
        $this->session->set_userdata($user_data); 

        // Set message 
        $this->session->set_flashdata('user_loggedin', 'You are now logged in'); 

        redirect('users/index'); 
       } else { 
        // Set message 
        $this->session->set_flashdata('login_failed', 'Login is invalid'); 

        redirect('users/login'); 
       }  
      } 
     } // end function login 

に私のモデル、URL、フォーム、テキスト、セキュリティ、form_validation

がロードされていますそれはブールが、ブール

場合の数値表現を与えていませんでした(の$ this - > form_validation->実行()!= 0){

関連する問題