2016-11-17 8 views
0

私はこのページのチュートリアルに従いますhttp://www.kodingmadesimple.com/2016/06/codeigniter-login-and-registration-tutorial-source-code.htmlと私と他の人が同じエラーを見つけました。:codeigniterログインフォームの検証は常に失敗します

ログインコントローラでは、「間違ったメールIDまたはパスワード!」が常に表示されるため、ログインコントローラに何か問題があります。メッセージは、資格がうまくいっても、私は間違いを見つけることができません(私はいくつかを見つけて解決しましたが)、私を助けてください。

コントローラ:

<?php 
class login extends CI_Controller 
{ 
public function __construct() 
{ 
    parent::__construct(); 
    $this->load->helper(array('form','url','html')); 
    $this->load->library(array('session', 'form_validation')); 
    $this->load->database(); 
    $this->load->model('user_model'); 
} 
public function index() 
{ 
    // get form input 
    $email = $this->input->post("email"); 
    $password = $this->input->post("password"); 
    //(This was added later for me, as it was needed) 
    $this->load->helper('security'); 
    // form validation 
    $this->form_validation->set_rules("email", "Email-ID", "trim|required|xss_clean"); 
    $this->form_validation->set_rules("password", "Password", "trim|required|xss_clean"); 

    if ($this->form_validation->run() == FALSE) 
    { 
     // validation fail 
     $this->load->view('login_view'); 
    } 
    else 
    { 
     // check for user credentials 
     $uresult = $this->user_model->get_user($email, $password); 
     if (count($uresult) > 0) 
     { 
      // set session 
      $sess_data = array('login' => TRUE, 'uname' => $uresult[0]->fname, 'uid' => $uresult[0]->id); 
      $this->session->set_userdata($sess_data); 
      redirect("profile/index"); 
     } 
     else 
     { 
      $this->session->set_flashdata('msg', '<div class="alert alert-danger text-center">Wrong Email-ID or Password!</div>'); 
      redirect('login/index'); 
     } 
    } 
    } 
} 

関連部分ビューで:

<?php $attributes = array("name" => "loginform"); 
     echo form_open("login/index", $attributes);?> 
     <legend>Login</legend> 
     <div class="form-group"> 
      <label for="name">Email-ID</label> 
      <input class="form-control" name="email" placeholder="Enter Email-ID" type="text" value="<?php echo set_value('email'); ?>" /> 
      <span class="text-danger"><?php echo form_error('email'); ?></span> 
     </div> 
     <div class="form-group"> 
      <label for="name">Password</label> 
      <input class="form-control" name="password" placeholder="Password" type="password" value="<?php echo set_value('password'); ?>" /> 
      <span class="text-danger"><?php echo form_error('password'); ?></span> 
     </div> 
     <div class="form-group"> 
      <button name="submit" type="submit" class="btn btn-info">Login</button> 
      <button name="cancel" type="reset" class="btn btn-info">Cancel</button> 
     </div> 
    <?php echo form_close(); ?> 
    <?php echo $this->session->flashdata('msg'); ?> 

私は明らかに自分自身を説明していなかった、またはあなたがより多くのコードを参照する必要がある場合、あなたは上で直接それを確認することができた場合チュートリアルのリンク。

ご協力いただきますようお願い申し上げます。

EDIT: これは、モデル内の関数である:

function get_user($email, $pwd) 
{ 
    $this->db->where('email', $email); 
    $this->db->where('password', md5($pwd)); 
    $query = $this->db->get('user'); 
    return $query->result(); 
} 

私はすでに「パスワード」のための「PWD」を変更し、私はそれを必要とし、今その作業いけないとしてMD5を削除していました。

+0

'場合(数($ uresult)> 0) 'が0に等しい場合、' get_user'関数を見てそこで何が起きているのかを見る必要があります。また、私はあなたがデータベースでユーザーを持っていると仮定ええ? – Blinkydamo

+0

新しいユーザーを追加することができるので、データベース接続とデータは正常です。 – NullEins

+0

いいえ、結果の数はまだゼロです。それで、なぜelseに入り、エラーが出るのですか? – Blinkydamo

答えて

0

あなたはこのラインになっていると、フォームがOK検証している:

$uresult = $this->user_model->get_user($email, $password); 
     if (count($uresult) > 0) 

はつまり、あなたが結果セットを返すされていることを確認するためにGET_USERの機能をチェックしてください:

$this->db->where('user_email', $user_email); 
$result = $this->db->get('users'); 

return $result->result(); 
+0

正しい方向を指してくれてありがとう、関数内の変数名が異なっていました。今は働いている! – NullEins

+0

心配はありません - それは簡単な修正でした! –

関連する問題