database - login session is not working codeigniter 3.1.11 , php 7.4

Solution:

you have to use

session_start();

at the very beginning of the php script of every page that needs session variables.

Answer

Solution:

Solved, i actually was miss spelling the "username" and "password", by solving that i logged in successfully .thanks for your answers

Answer

Solution:

First, I don't know what the $data is doing in your index() of the Login controller, and what the validate() is doing in your model admin, then I think it would be better to put the login and logout function in the Login Controller as the following:

<?php 
class Login extends CI_Controller{ 
    
    function __construct(){      
        parent::__construct();
    }   

    function index() {
        $this->load->view('admin/login'); 
    }

    public function log_in()
    {
        $this->load->model('admin');

        $this->form_validation->set_rules('username', 'Username', 'trim|required', array('required' => 'Username required'));
        $this->form_validation->set_rules('password', 'Password', 'trim|required', array('required' => 'Password required'));

        //username:admin password:123456
        if ($this->form_validation->run() !== false) {
            $username = $this->input->post('username');
            $password = $this->input->post('password');

            $check = $this->admin->validate($username, $password);

            if ($check != false) {
                $this->session->set_userdata('admin','1');
                redirect('Dashboard');
            } else {
                redirect('Login');
            }
        }
        $this->load->view('admin/login'); 
    }
    
    public function log_out()
    {
        $this->session->sess_destroy();
        redirect('Login'); 
    }
}
?>

then your Dasboard Controller as follows:

<?php
    class Dashboard extends CI_Controller
    {
        function __construct()
        {
            parent::__construct();
            if(!$this->session->userdata('admin'))
                redirect('Login');
        }
        function index()
        {
            $this->load->view('admin/dashboard');
        }
    }
?>

and the Admin model as follows :

<?php
class Admin extends CI_Model
{
    function validate($username, $password)
    {
        $this->db->select('*')
            ->from('admins')
            ->where('username', $username)
            ->where('password', md5($password));
        $query = $this->db->get();
    
        return $query->result();
    }
}
?>

Source