[本地主机在Codeigniter中重定向了您太多次

问题描述 投票:0回答:1

我已经为此进行了搜索,但没有得到适用于我的情况的任何信息,因此,我正在发布我的问题。我正在使用CodeIgniter MVC框架进行管理员登录,我为所有从“ Admin_Controller”扩展的管理员控制器编写了名为“ Admin_Controller”的基本控制器,并在基本控制器“ Admin_Controller”中写入了登录会话检查

文件夹结构:

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

登录表格: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>

我的基本控制器:core / 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'); } } }

我的登录控制器: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]

我的问题是显示为“本地主机重定向了您太多次。”

我的疑问是,在'controllers'的'admin'文件夹中有'Login'控制器是否存在任何问题?有人指出我正确的方向吗?谢谢。
php codeigniter authentication codeigniter-3
1个回答
0
投票
redirect('admin / login')将查找名为Admin的控制器和方法登录。您可以更改为foo / bar,其中foo是所需的控制器,而bar是方法。

具有此功能

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

您可以阅读有关重新映射here的信息,或使用route

无论哪种方式,您都应该能够执行该功能来中断重定向循环。

© www.soinside.com 2019 - 2024. All rights reserved.