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'));
  }