2017-12-19 25 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> 

내가 로그인 할 때, 난 항상이 오류가 :

Screenshot of error

+0

코드 디버깅을 시도 했습니까? – jdv

+0

암호로 md5를 사용하지 마십시오. http://php.net/manual/en/faq.passwords.php – user4419336

답변

0

코드에 이상한 점이 전혀 없습니다.

그럼 당신은 분명 타격 마지막이 문 $cek->num_rows() > 0 false로 평가하고 어떤 이유로 의미 다른 중첩.

귀하가 적절하고 기존의 사용자 이름 + 비밀번호 조합을 입력한다고 가정합니다. 당신이 당신의 대답이없는 경우,

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

및 사용자 이름과 데이터베이스의 암호 경기 뭔가를 해시 있는지 :하지만 당신은 $p = md5($psw); 후 할 수있는 문제를 해결합니다. 가장 좋은 추측은 아마도 해시 된 암호와 일반 텍스트 만 저장하지 않았을 것입니다.


참고로 모든 리디렉션과 플래시 데이터를 모델 밖으로 이동해야합니다. 모델은 예외를 반환하거나 throw해야합니다.