2016-08-22 11 views
2

私はCodeIgniterを使い慣れていません。ログインページを作成しようとしています。私は既にデータベースを使って登録ページを作成していますが、仕事。Codeigniterのログインページは機能しません

ログインボタンをクリックすると、ページが更新されます。私は多くの人を殺そうとしました( 'sss');コントローラーで何が間違っているのかを把握するために、「sss」は画面に表示されませんでした。ここに私のコードです。私が間違っていることを教えてもらえますか?

これは私のコントローラである:

public function login() { 



    $this->load->view('navbar'); 
    $this->load->view('header'); 
    $this->load->view('login'); 
    $this->load->view('footer'); 

    $password = $this->input->post('password'); 
    $email = $this->input->post('email'); 

    $result = $this->signup_model->login($email, $password); 


    if (isset($_POST['login'])) { 
     if ($this->form_validation->run() == FALSE) { 
      $this->session->set_flashdata('message', '<div class="alertmsg">Something is wrong!</div>'); 


      redirect('users'); 
     } else 
     if ($result) { 
      $sess_array = array(); 

      foreach ($result as $row) { 
       $sess_array = array('id' => $row->id, 'email' => $row->email); 

       $this->session->set_userdata('logged_in', $sess_array); 
      } 
      return TRUE; 
     } else { 
      $this->form_validation->set_message('login', 'Invalid email or password'); 
      return false; 

     } 
    } 
} 

ビュー:

<div class="loginContainer"> 

<div class="loginWrapper"> 

<?php echo validation_errors(); ?> 
<?php echo form_open('users/login'); ?> 

    <label for='email'>Email</label><div class='form_error'><?= form_error('email')?></div> 
    <input class='form-control1' name='email' placeholder='Email' type='text' value='<?php echo set_value('email'); ?> ' /> 
    <span class='text-danger'><?php echo form_error('email'); ?> </span> 

    <label for='password'>Password</label><div class='form-error'><?= form_error('password') ?> </div> 
    <input class='form-control1' name='password' placeholder='Password' type='password' /> 
    <span class='text-danger'><?php echo form_error('password'); ?></span> 

    <input type="submit" style='margin-left: 40%; margin-right: 40%; margin-top: 9%; text-align: center; width: 20%; ' value="Login"/> 

</div> 

モデル:

public function login($email, $password) { 


    $this->db->select('id, email, password'); 
    $this->db->from('register'); 
    $this->db->where('email', $email); 
    $this->db->where('password', MD5($password)); 
    $this->db->limit(1); 

    $query = $this->db->get(); 

    if ($query->num_rows() == 1) { 
     return $query->result(); 
    } else { 
     return false; 
    } 
} 
+1

'login'という名前の要素はありません。私はcodeigniterユーザではありませんが、 'md5'よりも優れたハッシングメソッドを持っていないか、PHP関数http://php.net/manual/en/function.password-hashを使用できませんでした。 php。 – chris85

+0

md5それはちょうど練習のためのものです、私はこの例をオンラインで見つけて、それが私のために働くように修正しました。私は現在、CMSを使用していないが、私はすぐになるだろう。今、私はちょうどローカルホストでテストしています –

+0

注:あなたはコントローラで行う最後のものとしてビューを読み込む必要があります。 – PaulD

答えて

2

、交換してくださいname属性を逃した

<input type="submit" style='margin-left: 40%; margin-right: 40%; margin-top:9%; text-align: center; width: 20%; ' name='login' value="Login"/> 

、と

<input type="submit" style='margin-left: 40%; margin-right: 40%; margin-top: 9%; text-align: center; width: 20%; ' value="Login"/> 

関連する問題