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

时间:2015-06-23 23:06:53

标签: php codeigniter

我目前正在尝试将我的应用程序从MySQL数据库更改为MongoDB数据库。我的项目需要比较其中的两个,我的MySQL代码正在工作,现在它给了我这个错误。

堆栈追踪:

  

遇到PHP错误严重性:通知消息:未定义属性:Users::$form_validation文件名:controllers/users.php行号:26

错误行:

$this->form_validation->set_rules('username','Username','trim|required|min_length[4]|xss_clean');   

代码:

<?php
class Users extends CI_Controller{
    public function register(){ 
        $this->form_validation->set_rules('first_name','First Name','trim|required|max_length[50]|min_length[2]|xss_clean');
        $this->form_validation->set_rules('last_name','Last Name','trim|required|max_length[50]|min_length[2]|xss_clean');
        $this->form_validation->set_rules('email','Email','trim|required|max_length[100]|min_length[5]|xss_clean|valid_email');
        $this->form_validation->set_rules('username','Username','trim|required|max_length20]|min_length[6]|xss_clean');
        $this->form_validation->set_rules('password','Password','trim|required|max_length[20]|min_length[6]|xss_clean');
        $this->form_validation->set_rules('password2','Confirm Password','trim|required|max_length[50]|min_length[2]|xss_clean|matches[password]');
        if($this->form_validation->run() == FALSE){
            $data['main_content']='users/register';
            $this->load->view('layouts/main',$data);    
        }else{
            if($this->User_model->create_member()){ 
                $this->session->set_flashdata('registered','Registered successfully');
                redirect('home/index'); 
            }
        }
    }

    public function login(){
        //$this->load->model('user_model');
        $this->form_validation->set_rules('username','Username','trim|required|min_length[4]|xss_clean');      
        $this->form_validation->set_rules('password','Password','trim|required|min_length[4]|max_length[50]|xss_clean');        

        $collection = $this->database->users;

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

            $this->session->set_flashdata('login_failed', 'Sorry, this username doesn't exist.');
            redirect('home/index');
        } else {

        $username=$_POST['login'];
        $password=$_POST['password'];

        $user_id = $collection->findOne(array('username' => $username, 'password' => md5($password)));
          // $username = $this->input->post('username');
          // $password = $this->input->post('password');


           $user_id = $this->User_model->login_user($username,$password);


           if($user_id){

               $user_data = array(
                       'user_id'   => $user_id,
                       'username'  => $username,
                       'logged_in' => true
                );

               $this->session->set_userdata($user_data);

               redirect('home/index');
            } else {

                $this->session->set_flashdata('login_failed', 'Sorry, this username doesn't exist.');
                redirect('home/index');
            }
        }
    }

    public function logout(){

        $this->session->unset_userdata('logged_in');
        $this->session->unset_userdata('user_id');
        $this->session->unset_userdata('username');
        $this->session->sess_destroy();

        redirect('home/index');
    }
}

3 个答案:

答案 0 :(得分:6)

更改config / autoload.php对我有用,只需在autoload中添加form_validation:

$autoload['libraries'] = array('form_validation');

答案 1 :(得分:2)

这是因为 无法加载相关库

方法01

public function  __construct()
  {
     parent::__construct();
     $this->load->library('form_validation');
     $this->load->helper('form');
  }

方法02

config/autoload.php

中的

$autoload['libraries'] = array('form_validation');
$autoload['helper'] = array('url', 'form');

Form_Validation Codeigniter

答案 2 :(得分:0)

遵循此方法 -

     public function  __construct()
  {
     parent::__construct();
     $this->load->library('form_validation');
     $this->load->helper('form');
  }