Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CodeIgniter PHP错误登录表单_Codeigniter_Login_Php - Fatal编程技术网

CodeIgniter PHP错误登录表单

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

我正在使用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 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。我提出了一个新问题,概述了这个问题。