私はこのページのチュートリアルに従います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を削除していました。
'場合(数($ uresult)> 0) 'が0に等しい場合、' get_user'関数を見てそこで何が起きているのかを見る必要があります。また、私はあなたがデータベースでユーザーを持っていると仮定ええ? – Blinkydamo
新しいユーザーを追加することができるので、データベース接続とデータは正常です。 – NullEins
いいえ、結果の数はまだゼロです。それで、なぜelseに入り、エラーが出るのですか? – Blinkydamo