Php 检查Codeigniter中的登录和重定向是否不工作?
使用检查登录功能时出现问题。Php 检查Codeigniter中的登录和重定向是否不工作?,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,使用检查登录功能时出现问题。 当我输入并输入管理员用户名和密码时,它不会重定向到主页管理页面。但是当我试着 . 它仍然重定向到登录页面 /** * MY_Controller constructor. */ class MY_Controller extends CI_Controller { public $data = array(); function __construct() { parent::__construct();
当我输入并输入管理员用户名和密码时,它不会重定向到主页管理页面。但是当我试着 . 它仍然重定向到登录页面
/**
* MY_Controller constructor.
*/
class MY_Controller extends CI_Controller
{
public $data = array();
function __construct()
{
parent::__construct();
// $this->load->library('session');
$controller = $this->uri->segment(1);
switch ($controller) {
case 'admin': {
$this->load->helper('admin');
$this->_check_login();
break;
}
default: {
}
}
}
/*
* Check login admin
*/
function _check_login()
{
$controller = $this->uri->rsegment('1');
$controller = strtolower($controller);
$login = $this->session->userdata('login');
//redirect to login if not logged in.
if (!$login && $controller != 'login') {
redirect(admin_url('login'));
}
//redirect to home if login successful.
if ($login && $controller == 'login') {
redirect(admin_url('home'));
}
}
}
/*
* admin_helper
*/
function admin_url($url = '')
{
return base_url('admin/'.$url);
}
但是当我离开的时候
//redirect to login if not logged in.
if (!$login && $controller != 'login') {
redirect(admin_url('login'));
}
在我用我的管理员登录后,它成功重定向到主页
为什么它不起作用
但我仍然找不到您在哪里使用会话,我是说,对于设置会话,我们通常使用
$this->session->set_userdata('user_login_data')代码>我认为您的代码中缺少它
<?php
class Welcome extends CI_Controller{
function __construct()
{
parent::__construct();
}
public function index()
{
$adminId = $this->session->userdata('unique_id');
if(empty($adminId)){
$this->load->view('login');
}else{
redirect('home/dashboard');
}
}
public function login()
{
$username = $this->input->post('username');
$password = base64_decode($this->input->post('password'));
$arr = array(
'username' => $username,
'password' => md5($password),
'user_type' => 'admin'
);
$result = $this->common_model->getMultiple('panel_login',$arr);
if(!empty($result )){
$this->session->set_userdata('unique_id',$result[0]['s_no']);
$this->session->set_userdata('username',$result[0]['username']);
$this->session->set_userdata('password',$result[0]['password']);
$this->session->set_userdata('type',$result[0]['user_type']);
$this->session->set_userdata('status',$result[0]['status']);
$this->session->set_userdata('user_activity',time());
}
echo json_encode($result);
}
}
?>
为了您的帮助,我还附上了我的用户登录演示代码,希望它能对您有所帮助。下面的声明
if (!$login && $controller != 'login') {
redirect(admin_url('login'));
}
将始终返回true,因为$login将始终为false,因为您尚未在set_userdata中设置其值,$controller将始终返回admin作为controller,因为您使用段1作为索引。所以您正在重新登录页面
*设置会话更正并仅检查会话值而不是控制器值,以检查用户是否经过身份验证
如果会话值login未设置为true,则重定向到loign,否则重定向到主页在该函数中,当用户点击登录按钮时,您正在设置会话???@SoravGarg sr,我已编辑!你编辑的地方我找不到你的changes@SoravGarg我添加了我的控制器登录。@SoravGarg非常感谢,我修复了我的登录控制器。这是工作!
if (!$login && $controller != 'login') {
redirect(admin_url('login'));
}