【问题标题】:codeigniter admin panel file structurecodeigniter 管理面板文件结构
【发布时间】:2012-11-08 12:14:11
【问题描述】:

我在使用 codeigniter 设置管理部分时遇到了困难。

我刚刚在控制器文件夹中添加了一个名为 fam_Admin 的新文件夹。

所以结构如下:

-控制器
--->fam_admin
---->-login.php

在 routes.php 我添加了以下代码: $route['fam_admin'] = "fam_admin/login";

<?php
class Login extends CI_Controller {
  public function index() {
    //$login['main_content'] = '/fam_admin/login';
    //$this -> load -> view('fam_admin/includes/template', $login);
    $this -> load -> view('fam_admin/login');
  }
  public function validate_login() {
    $username = $this -> input -> post('username');
    $password = $this -> input -> post('password');
    $this -> load -> library('form_validation');
    $this -> form_validation -> set_rules('username', 'username', 'trim|required');
    $this -> form_validation -> set_rules('password', 'password', 'trim|required|callback_credential_check');
    if ($this -> form_validation -> run() == FALSE) {
      $this -> load -> view('fam_admin/login');
    }
  }
  public function credential_check() {
    //Field validation succeeded.&nbsp; Validate against database
    $username = $this -> input -> post('username');
    $password = $this -> input -> post('password');
    $this -> load -> model('fam_admin/admin');
    //query the database
    $query = $this -> admin -> check_login($username, $password);
    if (!$query) {
      $this -> form_validation -> set_message('login_check', 'Invalid username or password');
      return false;
      $this -> index();
    } else {
      $data = array(
        'username' => $this -> input -> post('username'),
        'is_logged_in' => true
      );
      $this -> session -> set_userdata($data);
      //redirect('fam_admin/main_section');
      redirect('site/logged_in');
    }
  }
}
?>

上面是 login.php 的代码,但是当验证登录凭据时,它会在 google chrome 中出现以下错误。您可以通过输入虚假凭据来尝试它,它应该会给您错误并加载相同的登录表单。

网站在检索 http://www.famtripsandinspectionvisits.com/index.php/fam_admin/login/validate_login 时遇到错误。它可能因维护而停机或配置不正确。

【问题讨论】:

  • 您在fam_admin/main_section.php 有一个名为“main_section”的控制器吗?我在您的代码中没有看到任何暗示“main_section”应该加载任何内容的内容。您甚至注释掉了指向它的重定向,您确定您给我们提供了正确的详细信息吗?你也开启了错误报告和 display_errors 吗?
  • 我现在已经编辑了代码。我正在尝试一些东西,因此发布的代码中有错误。
  • 你的意思是在php.ini文件中报错吗?

标签: php file codeigniter session login


【解决方案1】:

一方面,这是一个问题:

if ( ! $query) {
    // ...
    return false;
    $this -> index();
}

一旦你 return 某事,就是这样 - 其余的代码将不会运行 - 所以 index 方法不会被调用并且根本没有输出。

...但是,您不应该在应该只处理数据验证的函数中加载视图。

我会重新安排一下,尝试将您的控制器简化为:

class Login extends CI_Controller {

    public function index()
    {
        $this->load->library('form_validation');
        $this->form_validation->set_rules('username', 'username', 'trim|required');
        $this->form_validation->set_rules('password', 'password', 'trim|required');
        if ($this->form_validation->run())
        {
            $this->load->model('fam_admin/admin');
            $username = $this->input->post('username');
            $password = $this->input->post('password');
            $query = $this->admin->check_login($username, $password);
            if ($query)
            {
                $data = array(
                    'username' => $this->input->post('username'),
                    'is_logged_in' => true
                );
                $this->session->set_userdata($data);
                redirect('site/logged_in');
            }
            else
            {
                $this->form_validation->set_message('login_check', 'Invalid username or password');
            }
        }
        $this->load->view('fam_admin/login');
    }

}

【讨论】:

  • 在上面尝试过它不起作用,然后我打开了错误,错误出在我的模型中的 MD5 函数上。上面确实清理了你的代码,将来会帮助我。
  • 是的,即使没有那个错误,你也会有另一个错误。是的,抱歉之前不清楚,您在开发时需要这些设置:error_reporting(E_ALL); ini_set('display_errors', 'On'); 上线时关闭 display_errors,并将错误报告调低到适当的日志级别。
猜你喜欢
  • 2014-04-25
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多