Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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
Php 在codeigniter上找不到对象_Php_Forms_Codeigniter - Fatal编程技术网

Php 在codeigniter上找不到对象

Php 在codeigniter上找不到对象,php,forms,codeigniter,Php,Forms,Codeigniter,我在本地主机上安装了codeigniter main.php控制器是 class Main extends CI_Controller { public function index() { $this -> login(); } public function login() { $this->load->view('login'); } public function login_

我在本地主机上安装了codeigniter

main.php控制器是

class Main extends CI_Controller {

    public function index()
    {
        $this -> login();
    }

    public function login()
    {
        $this->load->view('login');
    }

    public function login_validation() {
        $this->load->library('form_validation');
        $this->form_validation->set_rules('email','Email','required');
        $this->form_validation->set_rules('password','Password','required|md5');

        if($this->form_validation->run())
        {
            redirect('main/members');
        }
        else
        {
            $this->load->view('login');
        }

    }

}
“登录正在工作”页面即将出现,但在我填写用户名和密码后,应该将我带到login/main/login\u validation,然后函数login\u validation()应该重定向到main/members或显示登录页面。但是,当我提交表单时,会出现“未找到对象”错误。有人可以帮助我吗

形式是


表单打开(“主/登录验证”)

要回答我认为您的问题的意思,您使用的表单验证类是错误的。您应该测试表单\u validation->run()是TRUE(所有字段都通过了验证)还是FALSE(一个或多个输入中有错误)。您的代码结构如下所示:

public function login_validation() {

    $this->load->library('form_validation');
    $this->form_validation->set_rules('email','Email','required');
    $this->form_validation->set_rules('password','Password','required|md5');
    if ($this->form_validation->run() === FALSE)
    {
        $this->load->view('login');
    }
    else
    {
        redirect('main/members');
    }
}

CodeIgniter文档中介绍了这一点。

在控制器中。。您可以尝试一下

function index()
{
 //This method will have the credentials validation
 $this->load->library('form_validation');

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

 if($this->form_validation->run() == FALSE)
 {
 //Field validation failed.  User redirected to login page

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

 }
else
{

 $this->check_database();
     //redirect('home');
 }

}
 function check_database()
{
//Field validation succeeded.  Validate against database
$username = $this->input->post('username');
$password = $this->input->post('password');

//query the database
$query_result = $this->model_login->login($username, $password);

if($query_result)
{


    $this->load->view('main/members');

}
else
{


    redirect('login');

}
}
模型中

 function login($username,$password){

 $query = $this->db->query("SELECT * FROM `login` WHERE `username`= '".$username."' AND
          password='".$password."' LIMIT 1");


     if ($query->num_rows() > 0)
        return TRUE;
    else
        return FALSE;



} 

具体错误是什么?主/成员是否应该是密码保护区?如果是这样,我看不出你是如何用你提供的代码检查任何东西的。你还应该从视图中发布整个表单代码,这样我们就可以确切地看到你试图使用的内容。函数
members()
是否存在于
main
控制器中?看起来您应该通过验证并重新定向到两个旁注。我看到您正在使用MD5准备密码。MD5已经过时,如果安全性对您很重要,则不应再使用它。如果您使用的是PHP5.5,请参阅;如果您使用的是5.3-5.4,请参阅。很好,也很好用。其次,查看加载“login”视图时的代码重复<代码>重定向()返回到
main/login
。这也将防止出现“是否再次提交?”错误。他的第一个
IF
正在检查
TRUE
if($this->form\u validation->run())
是检查布尔值的完美合法方法。如果你要拼出
,你也应该使用
==
足够公平,我只是更喜欢按照文档中的说明。感谢您对比较运算符的评论,我将其更改为检查类型。