CodeIgniter PHP错误登录表单
我正在使用CodeIgniter编写一个登录表单。我可以让表单正常显示,但当我单击登录时,会显示以下错误:CodeIgniter PHP错误登录表单,codeigniter,login,php,Codeigniter,Login,Php,我正在使用CodeIgniter编写一个登录表单。我可以让表单正常显示,但当我单击登录时,会显示以下错误: A PHP Error was encountered Severity: Notice Message: Undefined property: CI_DB_mysql_driver::$query Filename: models/membership_model.php Line Number: 8 这是m membership_model.php文件 class
A PHP Error was encountered
Severity: Notice
Message: Undefined property: CI_DB_mysql_driver::$query
Filename: models/membership_model.php
Line Number: 8
这是m membership_model.php文件
class Membership_model extends CI_Model{
function validate(){
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', md5($this->input->post('password')));
$this->$query = $this->db->query->get('members');
if($query->num_rows != 0){
return true;
}
}
}
这是我的login.php文件,它是我的主控制器
class Login extends CI_CONTROLLER{
function index()
{
$data['main_content'] = 'login_form';
$this->load->view('includes/template', $data);
}
function validate_credentials()
{
//load model to query db
$this->load->model('membership_model');
$query = $this->membership_model->validate();
if($query){ //if credentials validated
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true
);
$this ->session->set_userdata($data);
redirect('site/members_area');
}
else{ //if not validated load login form again.
$this->index();
}
}
这是我收到的错误消息的屏幕截图
你知道会出什么问题吗?我一点也不知道!我在网上查过了,但似乎什么都帮不了我。有人遇到过这个问题吗。我一直在关注这个教程视频,但它使用的是旧版本的CodeIgniter,所以我一直在进行更改
应该是:
function validate()
{
$array = array(
'username' => $this->input->post('username'),
'password' => md5($this->input->post('password')));
$query = $this->db->get_where('members', $array);
if ($query->num_rows() > 0)
{
return true;
}
}
注意:getwhere()
如果您使用的是旧版本的CI,则可以调用getwhere()
顺便说一句,你不应该使用MD5散列你的密码。您应该使用BCrypt,因为MD5是不安全的
应该是:
function validate()
{
$array = array(
'username' => $this->input->post('username'),
'password' => md5($this->input->post('password')));
$query = $this->db->get_where('members', $array);
if ($query->num_rows() > 0)
{
return true;
}
}
注意:getwhere()
如果您使用的是旧版本的CI,则可以调用getwhere()
顺便说一句,你不应该使用MD5散列你的密码。您应该使用BCrypt,因为MD5是不安全的。首先很明显,您正在加载数据库库吗 其次,为什么要在query()之后追加get() i、 e query()是一个独立的函数,其示例说明它应该像这样使用:
$query = $this->db->query('YOUR QUERY HERE');
而get()是活动记录的一部分
$query = $this->db->get('mytable');
或者在您的情况下:
$query = $this->db->get('members');
首先,很明显,您正在加载数据库库吗 其次,为什么要在query()之后追加get() i、 e query()是一个独立的函数,其示例说明它应该像这样使用:
$query = $this->db->query('YOUR QUERY HERE');
而get()是活动记录的一部分
$query = $this->db->get('mytable');
或者在您的情况下:
$query = $this->db->get('members');
您是否启用了活动记录?我不这么认为,我会在配置文件中找到它吗?它在您的
应用程序/数据库.php
文件中,应该是$active\u record=TRUE
这也是您第一次在应用程序中执行数据库查询,例如在中,您以前是否能够成功连接并检索数据?它已启用,并且以前我在查询数据库和连接数据库时没有遇到任何问题。这是一个新安装的CI,但我正在尝试编译我的其他应用程序的所有内容,以生成一个应用程序(如果有意义的话)您是否启用了活动记录?我不这么认为,我会在配置文件中找到它吗?它在您的应用程序/数据库.php
文件中,应该是$active\u record=TRUE
这也是您第一次在应用程序中执行数据库查询,例如在中,您以前是否能够成功连接并检索数据?它已启用,并且以前我在查询数据库和连接数据库时没有遇到任何问题。这是一个新安装的CI,但我试图从我的其他应用程序编译一切,使一个单一的应用程序,如果这使唤醒改变了它,因为你的建议,但没有用。不过,我确实明白这是怎么造成问题的。我是粗心的。我在这里发布了另一个问题,这个问题在某种程度上与我的问题有关,因为现在没有看到上面的问题。。。。您可以使用get_where()
方法。我将重做您的代码以使用它。谢谢您,这非常有帮助!我很感激这一次,但出于某种原因,我得到了404。我创建了一个新问题,概述了这个问题。我按照你的建议进行了更改,但没有效果。不过,我确实明白这是怎么造成问题的。我是粗心的。我在这里发布了另一个问题,这个问题在某种程度上与我的问题有关,因为现在没有看到上面的问题。。。。您可以使用get_where()
方法。我将重做您的代码以使用它。谢谢您,这非常有帮助!我很感激这一次,但出于某种原因,我得到了404。我提出了一个新问题,概述了这个问题。