2017-12-19 20 views
0

パスワードとユーザー名は正しいですが、管理者にログインできません。私のコントローラーに何か問題がありますか?これは私のコントローラである管理ダッシュボードにログインできません

class login_model extends CI_Model{ 
    function cek($username, $password){ 
     $this->db->where("username", $username); 
     $this->db->where("password", $password); 
     return $this->db->get("user_admin"); 
    } 
    function getLoginData($usr, $psw){ 
     $u = $usr; 
     $p = md5($psw); 
     $q_cek_login = $this->db->get_where('user_admin', array('username' => $u, 'password' => $p)); 
     if(count($q_cek_login->result()) > 0){ 
      foreach($q_cek_login->result() as $qck){ 
       foreach($q_cek_login->result() as $qad){ 
        $sess_data['logged_in'] = TRUE; 
        $sess_data['id'] = $qad->id; 
        $sess_data['username'] = $qad->username; 
        $sess_data['password'] = $qad->password; 
        $sess_data['email'] = $qad->email; 
        $sess_data['level'] = $qad->level; 
        $this->session->set_userdata($sess_data); 
       } 
       redirect('welcome_message'); 
      } 
     }else{ 
      $this->session->set_flashdata('result_login'. 'username dan password salah'); 
      header('location: '. base_url(). 'login'); 
     } 
    } 
} 

この

は私のモデルである

class login extends CI_Controller { 
function _construct(){ 
    parent::_construct(); 
    if($this->session->userdata('username')){ 
     redirect(base_url('welcome_message')); 
    } 
    $this->load->model(array('login_model')); 
} 
function index(){ 
    $this->load->view('login'); 
} 

function proses(){ 
    $this->form_validation->set_rules('username', 'username', 'required|trim|xss_clean'); 
    $this->form_validation->set_rules('password', 'password', 'required|trim|xss_clean'); 
    if($this->form_validation->run() == FALSE){ 
     $this->load->view('login'); 
    }else{ 
     $usr = $this->input->post('username'); 
     $psw = $this->input->post('password'); 
     $u = $usr; 
     $p = md5($psw); 
     $cek = $this->login_model->cek($u, $p); 
     if($cek->num_rows() > 0){ 
      foreach($cek->result() as $qad){ 
       $sess_data['id'] = $qad->id; 
       $sess_data['email'] = $qad->email; 
       $sess_data['username'] = $qad->username; 
       $sess_data['level']=$qad->level; 
       $this->session->set_userdata($sess_data); 
      } 
      $this->session->set_flashdata('success', 'login berhasil'); 
      redirect(base_url('/')); 
     }else{ 
      $this->session->set_flashdata('result_login', 'username dan password yang anda masukkan salah'); 
      redirect(base_url('login')); 
     } 
    } 
} 

マイビュー:

<div class="login-box-body"> 
<p class="login-box-msg">Sign in to start your session</p> 
<form action="<?php echo base_url('login/proses'); ?>" method="post"> 
<?php if (validation_errors() || $this->session->flashdata('result_login')) { ?> 
     <div class="alert alert-danger animated fadeInDown" role="alert"> 
      <button type="button" class="close" data-dismiss="alert">&times;</button> 
      <strong>Peringatan!</strong> 
      <?php echo validation_errors(); ?> 
      <?php echo $this->session->flashdata('result_login'); ?> 
     </div> 
    <?php } ?> 
    <div class="form-group has-feedback"> 
    <input type="text" class="form-control" placeholder="Username" id="username" name="username"> 
    <span class="glyphicon glyphicon-user form-control-feedback"></span> 
    </div> 
    <div class="form-group has-feedback"> 
    <input type="password" class="form-control" placeholder="Password" id="password" name="password"> 
    <span class="glyphicon glyphicon-lock form-control-feedback"></span> 
    </div> 
    <div class="row"> 
    <div class="col-xs-8"> 
    <a href="http://localhost/adminpmjb/register" class="text-center">Register a new admin</a> 
    </div> 

私がログインしようとすると、私はいつもこのエラーが出ます:

​​

+0

コードをデバッグしましたか? – jdv

+0

パスワードにmd5を使用しないでくださいhttp://php.net/manual/en/faq.passwords.php – user4419336

答えて

0

私はあなたのコードに何か間違ったことはありません。

あなたは明らかに最後の入れ子になっています。これは何らかの理由でこの文$cek->num_rows() > 0が偽と評価されていることを意味します。

正しく、既存のユーザー名とパスワードの組み合わせを入力しているとします。しかし、あなたが$p = md5($psw);後に行うことができますトラブルシューティングする:ない場合

echo 'hashed password: ' . $p . '<br>username: ' . $u; exit;

をして、データベース内のユーザ名とハッシュ化されたパスワードが一致するかどうかを確認何か、あなたはあなたの答えを持っています。私の推測では、おそらくハッシュされたパスワードとプレーンテキストのパスワードしか保存していなかったと思います。


サイドノートとして、すべてのリダイレクトとフラッシュデータをモデルから削除する必要があります。モデルは例外を返すか、例外をスローするだけです。

関連する問題