我正在使用Code Igniter为自己构建测试网站,并且正在与Logins进行斗争。根据phpMyAdmin,我可以创建新用户并将它们存储在我的数据库中而不会有任何麻烦,但我正在努力实际登录。
我目前的代码是:
控制器:
public function index()
{
$this->home();
}
public function home()
{
$this->load->model('model_users');
$data['emails'] = $this->model_users->getEmails();
$data['users'] = $this->model_users->getUsers();
$this->load->view('login', $data);
}
public function validate_credentials() {
$this->load->model('model_users');
$query = $this->model_users->validate();
if($query){
$data = array(
'email' => $this->input->post('email'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
redirect('trade');
}
else{
$this->load->view('about_us');
}
}
型号:
<?php
class Model_users extends CI_Model {
function __construct() {
parent::__construct(); //Call the model constructor
}
function validate() {
$this->db->where('email', $this->input->post('email'));
$this->db->where('password', md5($this->input->post('password')));
$query = $this->db->get('users');
if($query->num_rows == 1) {
return true;
}
}
function create_member() {
$email = $this->input->post('email');
$new_user = array(
'email' => $this->input->post('email'),
'name' => $this->input->post('name'),
'password' => md5($this->input->post('password'))
);
$insert = $this->db->insert('users', $new_user);
return $insert;
}
function check_email_exists($email) {
$this->db->where('email', $email);
$result = $this->db->get('users');
if($result->num_rows() > 0) {
return FALSE; //email taken
}else{
return TRUE; //email available
}
}
function getEmails() {
$query = $this->db->query('SELECT email FROM users');
if($query->num_rows() > 0){
return $query->result();
} else{
return NULL;
}
}
function getUsers() {
$query = $this->db->query('SELECT * FROM users');
if($query->num_rows() > 0) {
return $query->result();
} else {
return NULL;
}
}
}
查看:
<body>
<!-- Page Content -->
<div id="page-content-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div id="login_form">
<?php if(isset($successful_creation)) { ?>
<h3><?php echo $successful_creation; ?></h3>
<?php } else { ?>
<h1><i class="fa fa-user fa-fw fa-lg"></i>Login</h1>
<?php } ?>
<?php
echo form_open('welcome/validate_credentials');
echo form_input('email', '', 'placeholder="Email"');
echo form_password('password', '', 'placeholder="Password" class="password"');
echo form_submit('submit', 'Login');
echo anchor('signup', 'Create Account');
echo form_close();
?>
</div>
</div>
</div>
</div>
</div>
<!-- /#page-content-wrapper -->
</div>
<!-- /#wrapper -->
当我在登录页面上点击登录时,我总是被重定向到About_Us页面,我放在那里只是为了测试登录是否正常。我忽略了我的代码有什么问题吗?任何帮助将不胜感激。
答案 0 :(得分:1)
在您的模型中更新validate()
方法,请使用$query->num_rows()
代替$query->num_rows
。它应该是这样的:
if($query->num_rows() == 1) {
return true;
}