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
Php codeigniter登录系统中出现错误_Php_Codeigniter_Login - Fatal编程技术网

Php codeigniter登录系统中出现错误

Php codeigniter登录系统中出现错误,php,codeigniter,login,Php,Codeigniter,Login,所以我犯了这个错误 致命错误:在第15行的C:\xampp\htdocs\application\models\user.php中对非对象调用成员函数num_rows() 看法 用户名: 密码: 控制器登录: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Login extends CI_Controller { function __construct() {

所以我犯了这个错误 致命错误:在第15行的C:\xampp\htdocs\application\models\user.php中对非对象调用成员函数num_rows()

看法


用户名:

密码:

控制器登录:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login extends CI_Controller {

function __construct()
{
parent::__construct();
}

function index()
{
$this->load->helper(array('form'));
    $this->load->view('header');
$this->load->view('login_view');
    $this->load->view('footer');
}

}

?>

控制器验证

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class VerifyLogin extends CI_Controller {

function __construct()
{
parent::__construct();
$this->load->model('user','',TRUE);
}

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

$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)
{
 //Field validation failed.  User redirected to login page
 $this->load->view('login_view');
}
else
{
 //Go to private area
 redirect('home', 'refresh');
}

}

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

//query the database
$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');
 return false;
}
}
}
?>

模型

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

Class User extends CI_Model
{
function login($username, $password)
{
$this -> db -> select('gebruiker_id, gebruikersnaam, wachtwoord');
$this -> db -> from('gebruikers');
$this -> db -> where('gebruikersnaam', $username);
$this -> db -> where('wachtwoord', MD5($password));
$this -> db -> limit(1);

$query = $this -> db -> get();

if($query -> num_rows() == 1)
{
 return $query->result();
}
else
{
 return false;
}
}
}
?>

我试着查找不同问题的答案,但给出的答案无法解决我的问题

我在不同的网站上浏览过,我就是找不到答案

我是codeigniter的新手,它证明了当您让代码工作时非常方便

而不是这个

 if($query -> num_rows() == 1)
写这个

 if($query->num_rows()==1)

检查它是否工作

请检查您是否在配置文件夹的自动加载文件中声明了数据库类($autoload['libraries]=array('database');),也可以使用var_dump()检查输出

编辑

查询设置为FALSE而不是给出结果意味着它失败。我认为你的数据库连接根本不起作用。因此,您可以检查并尝试使用DSN进行连接


参考-

我认为解决方法对您来说是很好的。检查结果是否为空,而不是检查行数

尝试在查询中添加->result(),它工作正常,如:

$dataFromBase = $this->db->get_where($this::DB_TABLE, MyWhereArguments)->result(); // or any query you want.
通过这种方式,我已经有了结果格式,对象格式,然后我检查它是否为null,比如:

if ($dataFromBase != null) {
    // handle your result
}

但还是有点奇怪,你的num_rows()不起作用,我做了一些测试,对我来说效果很好。

如果你是编写igniter的新手,我建议你去看看Laravel。CI已死亡。请尝试删除->之间的空格,其他人尝试使用$query->num\u rows()现在得到了什么错误?删除$query->num_rows()上方箭头之间的所有空格。相同错误。删除所有空格。致命错误:在C:\xampp\htdocs\application\models\user.php的第15行write var_dump($query->num_rows())的非对象上调用成员函数num_rows();告诉我o/p,而不是$this->db->where('gebruikersnaam',$username)$这->数据库->其中('wachtwoord',MD5($password));写下这个$where=array('gebruikersnaam'=>username,'wachtwoord'=>MD5($password))$此->数据库->何处($where);它可能会取代%query->。。。或者在下一行?$query=$this->db->get()下面;写入变量dum($query->num_rows());请参阅我以前编辑的commentvar_dump($query)给出的bool(false)$自动加载['libraries']=array('database');在自动加载文件中
if ($dataFromBase != null) {
    // handle your result
}