Php 我不断地得到;“未定义”;当我在Codeigniter中提交登录表单时

Php 我不断地得到;“未定义”;当我在Codeigniter中提交登录表单时,php,codeigniter,Php,Codeigniter,当我在Codeigniter中提交登录表单时,我一直得到“未定义”,我真的找不到问题,我尝试设置加密密钥,尽管我没有使用它,但这并不能解决问题 这是我的看法 <!--loads the header--> <?php $this->load->view('abt-header');?> <!--this is the login page--> <div data-role="page" id="Abt-login" data-add-ba

当我在Codeigniter中提交登录表单时,我一直得到“未定义”,我真的找不到问题,我尝试设置加密密钥,尽管我没有使用它,但这并不能解决问题

这是我的看法

<!--loads the header-->
<?php $this->load->view('abt-header');?>
<!--this is the login page-->

<div data-role="page" id="Abt-login" data-add-back-btn="true">
    <div data-role="header" data-position="fixed">
        <h1>Login</h1>

    </div>
    <div data-role="content">

        <?php echo form_open('index.php/abovetheblues/login'); ?>
        <div data-role="fieldcontain">
            <p><?php echo validation_errors(); ?></p>

            <p>
                <label>Username: </label>
                <?php echo form_input('username', set_value('username') ); ?>

            </p>
            <p>
                <label>Password: </label>
                <?php echo form_password('password', set_value('password') ); ?>

            </p>

            <p>
                <?php echo form_submit('submit', 'Submit'); ?>
            </p>  

        </div> 
        <?php echo form_close(); ?>
        </div>

</div>
这是我在控制器中的代码

 public function login() {

    $this->form_validation->set_rules('username', 'Username', 'trim|required|alpha_numeric|min_length[6]|max_length[12]|xss_clean');
    $this->form_validation->set_rules('password', 'Password', 'trim|required|alpha_numeric|min_length[6]|max_length[6]|xss_clean');

    if ($this->form_validation->run() == FALSE) {

        // return main page if submitted form is invalid.

        $this->load->view('abt_login');

    } else {

         $this->load->model('abt_db');
    $q = $this->abt_db->check_login();


    if($q)
    {
        $data = array(
            'email'         => $this->input->post('email'),
            'password'      => $this->input->post('password'),
        );

        $this->session->set_userdata($data);
        redirect('index.php/abovetheblues/abt-abovetheblues');
    }
    else
    {
       redirect('index.php/abovetheblues/abt_selfhelp');
    }


    }
}
修改此行:

$user_id = $this->abt_db->$this->check_login($username, $password);
这条线

$user_id = $this->abt_db->check_login($username, $password);
编辑

此外,您的查询看起来更像这样:

$q = $this->db->where(array('username' => $username, 'password' => $password))->get(user, 1);

if($q->num_rows == 1)
        {
            return true;
        }
编辑2

我一直都是这样做的:

型号:

function validate()
    {
        $this->db->where('email', $this->input->post('email'));
        $this->db->where('password', sha1($this->input->post('password')));
        $q = $this->db->get('users');

        if($q->num_rows == 1)
        {
            return true;
        }
    }
控制器:

function validate_credentials()
    {
        $this->load->model('site_m');
        $q = $this->site_m->validate();


        if($q)
        {
            $data = array(
                'email'         => $this->input->post('email'),
                'is_logged_in'  => true
            );

            $this->session->set_userdata($data);
            redirect('admin/dashboard');
        }
        else
        {
            $this->message->set('failure','Wrong email or password!');
            $this->index();
        }
    }

它一直在工作。我想你在控制器中也遗漏了一些东西。

你从哪里得到这个错误?它只是在界面上说“未定义”,很抱歉问一下,但是我在哪里使用变量$q?让我知道它是否对你有效,如果不适用,我会粘贴我在每个站点使用的代码,它总是有效的。这和tho差不多。谢谢Matteo!我已经试过上面的代码,但它仍然说相同的“未定义”我张贴了一个代码,我怎么做的所有时间。我使用电子邮件作为用户名。你好,马特奥!我试图使用上面的代码,但它似乎没有做任何验证
function validate_credentials()
    {
        $this->load->model('site_m');
        $q = $this->site_m->validate();


        if($q)
        {
            $data = array(
                'email'         => $this->input->post('email'),
                'is_logged_in'  => true
            );

            $this->session->set_userdata($data);
            redirect('admin/dashboard');
        }
        else
        {
            $this->message->set('failure','Wrong email or password!');
            $this->index();
        }
    }