简体   繁体   English

localhost 在 Codeigniter 中将您重定向了太多次

[英]localhost redirected you too many times in Codeigniter

I have googled for this but did not get anything that worked for my scenario So, I am posting my question.我已经对此进行了谷歌搜索,但没有得到任何适合我的场景的东西所以,我发布了我的问题。 I am working on admin login using CodeIgniter MVC framework, I have written a base controller called 'Admin_Controller' for all my admin controllers which they extended from 'Admin_Controller' I have written login session check in my base controller that is 'Admin_Controller' but it is not working properly saying "localhost redirected you too many times." I am working on admin login using CodeIgniter MVC framework, I have written a base controller called 'Admin_Controller' for all my admin controllers which they extended from 'Admin_Controller' I have written login session check in my base controller that is 'Admin_Controller' but it无法正常工作,说“localhost 将您重定向了太多次。”

Folder structure:文件夹结构:

--controllers
   --admin/
     -- Banners.php
     -- Categories.php
     -------
     -------
     -- Login.php
 --models
   -- admin
      -- Mdl_banners.php
      -- Mdl_categories.php
      ------------
      --------------
 --views
   --admin
     -------
     -------

Login Form: admin/login/login_View.php登录表单:admin/login/login_View.php

<form action="<?php echo base_url(); ?>admin/login/validate_user" method="post" name="login_form">
  <h1>Login</h1>
     <?php
        echo "<div class='error_msg'>";
        if (isset($error_message)) {
          echo $error_message;
        }
        echo validation_errors();
        echo "</div>";
     ?>
    <div>
     <input type="text" name="user_name" class="form-control" placeholder="UserName" required="" />
    </div>
    <div>
      <input type="password" name="user_password" class="form-control" placeholder="Password" required="" />
    </div>
    <div>
      <button class="btn btn-default submit" name="submit_login">Login</button>
    </div>
</form>

My Base Controller: core/MY_Controller.php我的基础 Controller:核心/MY_Controller.php

class MY_Controller extends CI_Controller {
  function __construct()
  {
    parent::__construct();
    // modules::run('admin/login/isUserLoggedin');
  }
}
class Admin_Controller extends MY_Controller {
  public function __construct()
  {
    parent::__construct();
    $this->_title = 'My Site Name';
    // check if user is logged in
    if (! $this->session->userdata('logged_in')) {
      redirect('admin/login');
    }
  }
}

My Login Controller: Controllers/admin/Login.php我的登录 Controller:Controllers/admin/Login.php

class Login extends Admin_Controller {
  public function __construct(){
    parent::__construct();
    $this->load->model('admin/mdl_login');
  }

  public function index(){
    if ($this->session->userdata('logged_in'))
      redirect(base_url('admin/dashboard'));
    $data['title'] = $this->_title . ' - Admin Login';
    $this->load->view('admin/login/login_view');
  }

  public function validate_user(){
    $this->form_validation->set_rules('user_name', 'Username', 'trim|required|xss_clean');
    $this->form_validation->set_rules('user_password', 'Password', 'trim|required|xss_clean');

    if ($this->form_validation->run() == FALSE) {
      $this->load->view('login_view');
    } else {
      $data = array(
        'username' => $this->input->post('user_name'),
        'password' => md5($this->input->post('user_password'))
      );
      $result = $this->mdl_login->login($data);
      if ($result == TRUE) {
        $user_name = $this->input->post('user_name');
        $result = $this->mdl_login->read_user_information($user_name);
        if ($result != false) {
          $session_data = array(
            'user_id' => $result[0]->id,
            'user_name' => $result[0]->username,
            'email' => $result[0]->email,
          );
          // Add user data in session
          $this->session->set_userdata('logged_in', $session_data);
          redirect('admin/dashboard');
        }
      } else {
        $data = array(
          'error_message' => 'Invalid Username or Password'
        );
        $this->load->view('admin/login/login_view', $data);
      }
    }
  }
}

htaccess:访问:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

My problem is It is showing as "localhost redirected you too many times."我的问题是它显示为“本地主机重定向你太多次”。 My doubt is that is there any problem to have 'Login' controller inside 'admin' folder in 'controllers'?我的疑问是在“控制器”的“管理员”文件夹内有“登录”controller 有什么问题吗? Anyone point me in right direction?有人指出我正确的方向吗? Thanks.谢谢。

redirect('admin/login') will look for controller named Admin and method login. redirect('admin/login') 将查找名为 Admin 的 controller 和方法登录。 you can change to 'foo/bar' where foo is your desired controller and bar is the method.您可以更改为“foo/bar”,其中 foo 是您想要的 controller 而 bar 是方法。

given this function鉴于此 function

public function bar() {
  echo "I am about to show the login form here";
}

You can utilize remap or route .您可以使用remaproute

to break the redirect loop firstly understand the concept (use remap or routing) then you should modify your code to execute the above function.要打破重定向循环首先了解概念(使用重映射或路由)然后你应该修改你的代码来执行上面的 function。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM