1

我是 Codeigniter 的新手,并尝试从教程codeigniter login构建登录页面。现在,当我在输入用户名和密码后尝试登录时,出现以下错误。

遇到 PHP 错误

严重性:通知

消息:未定义的属性:Verifylogin::$form_validation

文件名:控制器/verifylogin.php

行号:18

编辑:

我的verifylogin.php文件是

    <?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
class Verifylogin extends CI_Controller
{
    function __construct() {
        parent::__construct();
    }

    function index()
    {
        $this->load->helper(array('form', 'url'));
        $this->load->model('user');
        $this->load->library('form_validation');

        //$this->load->library('form_validation', 'form_validation', true/false);

        $this->form_validation->set_rules('username','Username','trim|required|xss_clean');
        $this->form_validation->set_rules('password','Password','trim|required|xss_clean|callback_check_database');

        if($this->form_validation->run() == FALSE)
        {
            redirect('login','refresh');
        }
        else
        {
            redirect('home','refresh');
        }
    }

    function check_database($password)
    {
        $username = $this->input->post('username');
        $this->load->model('user');
        $result = $this->user->login($username,$password);

        if($result)
        {
            $sess_array = array();
            foreach($result as $row)
            {
                $sess_array = array('id'=>$row->id,'username'=>$row->username);

                $this->session->set_userdata('logged_in',$sess_array);
            }
            return TRUE;
        }
        else {
            $this->form_validation->set_message('check_database','Invalid username or password');
        }
    }
}
?>

也是这个form_validation.php文件所在的位置。

4

3 回答 3

1

请将所有这些代码从 index() 函数移动到构造函数,

$this->load->helper(array('form', 'url'));
$this->load->model('user');
$this->load->library('form_validation');

因为您也在 check_database() 函数中使用 form_validation 库。

它现在应该可以工作了。:)

于 2013-02-19T11:14:42.223 回答
1

你能把你的 login.php 和 home.php 放在你的问题中吗?

我认为你应该使用这个

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

尽管如此

redirect('login','refresh');
于 2014-02-27T07:33:01.610 回答
0

在使用表单验证之前,您必须调用辅助函数表单

$this->load->helper(array('form', 'url'));

在调用表单验证库之前使用它

于 2013-02-19T11:01:11.163 回答