【问题标题】:Fatal error: Cannot redeclare class致命错误:无法重新声明类
【发布时间】:2015-07-04 10:49:18
【问题描述】:

我正在尝试使用 codeigniter 创建一个登录系统,但是在尝试登录时发现了一个致命错误:(

控制器 Auth.php

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

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

class Auth extends CI_Controller {

    public function index()
    {
        // $this->load->view('Home');
    }

    // start login
   public function login()
   {
      $this->load->helper(array('form'));
      $this->load->view('Login');
   }
   // end login

   // start logout
   public function logout()
   {
       $this->session->unset_userdata('logged_in');
       redirect('Login','refresh');
   }
   // end logout


// start checkLogin
public function checkLogin()
{
    // field validation successfull, validate against database 
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    // query database
    $this->load->model('Auth');
    $result = $this->Auth->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('checkLogin', 'Invalid username or password');
        return FALSE;
    }
}
// end checkLogin

}

模型 Auth.php

<?php

class Auth extends CI_Model
{
    // start login
    function login($username, $password)
    {
        $this->db->select('id','username','password');
        $this->db->from('user_details');
        $this->db->where('username', $username);
        $this->db->where('password', $password);
        $this->db->limit(1);

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

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

请帮我找出我所做的确切错误:'(

【问题讨论】:

  • 您是否在类定义上方调用了construct 函数
  • 你使用哪个 CI 版本???
  • 我使用的是 CodeIgniter 3.0.0 版本
  • 我正在尝试使用 codeigniter 创建一个登录系统,但在尝试登录时发现 致命错误 :( 也发布该错误
  • parent::__construct(); 没有任何意义,因为您在类范围之前调用构造函数

标签: php codeigniter


【解决方案1】:

问题是您有两个同名的类 Auth 一个用于控制器,一个用于模型。一个脚本不能包含两个类,这就是您收到该错误的原因。

像这样 Auth_model.php 重命名你的身份验证模型并像这样声明类

class Auth_model extends CI_Model

希望你能休息一下如何使用这个模型。

【讨论】:

  • 谢谢,但现在又出现了一个错误 :( 致命错误:在 null in 上调用成员函数 set_userdata()
  • 如果你有不同的问题,你应该问另一个问题,或者你可以在 SO 上搜索它。Fatal error: Call to a member function set_userdata() 表示你使用Session 类但你没有加载它。
猜你喜欢
  • 2010-10-17
  • 2014-11-07
  • 2012-07-31
  • 2016-03-25
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多