簡體   English   中英

登錄 session 不工作 codeigniter 3.1.11, php 7.4

[英]login session is not working codeigniter 3.1.11 , php 7.4

我正在嘗試進行簡單的登錄 session,但我被重定向到登錄頁面,這是我的 Login.php controller。


> <?php class Login extends CI_Controller
 {  function __construct()  
{
>       parent::__construct();  
    if($this->session->userdata('admin'))
>           redirect('admin/dashboard'); 
    }   
function index() 
    {
>       $this->load->view('admin/login', $data); 
    }   function verify()   {
>       //username:admin password:123456    
    $this->load->model('admin');    
>   $check = $this->admin->validate();   
    if($check)      { 
>           $this->session->set_userdata('admin','1');
>           redirect('admin/dashboard');     
    }       
else        
{
>           
redirect('admin');      }    }
>   
> 
> 
> }

這是我的 Dashboard.php controller 如果用戶名和密碼正確,管理員將減少它

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

這是database.php


   $active_group = 'default';
               $query_builder = TRUE;
               
               $db['default'] = array(
                   'dsn'   => '',
                   'hostname' => 'localhost',
                   'username' => 'root',
                   'password' => '',
                   'database' => 'ASGB-test',
                   'dbdriver' => 'mysqli',
                   'dbprefix' => '',
                   'pconnect' => FALSE,
                   'db_debug' => (ENVIRONMENT !== 'production'),
                   'cache_on' => FALSE,
                   'cachedir' => '',
                   'char_set' => 'utf8',
                   'dbcollat' => 'utf8_general_ci',
                   'swap_pre' => '',
                   'encrypt' => FALSE,
                   'compress' => FALSE,
                   'stricton' => FALSE,
                   'failover' => array(),
                   'save_queries' => TRUE
               )
       
       ;

這是我的 autoload.php,我在這里激活數據庫和 session 庫

$autoload['libraries'] = array('database','session');

這里是 routes.php,歡迎 controller 基本上是原始的 codeigniter 歡迎視圖,我也定義了管理員路由


    $route['default_controller'] = 'welcome';
    $route['admin'] = 'admin/login';
    $route['404_override'] = '';
    $route['translate_uri_dashes'] = FALSE;

這里是 Admin_model.php

   <?php
class Admin_model extends CI_Model
{
    function validate()
    {
        $arr['username'] = $this->input->post('Username');
        $arr['password'] = md5($this->input->post('Password'));
        return $this->db->get_where('admins',$arr)->row();
    }
}

我確定我輸入了正確的密碼和用戶名,但它只是將我重定向到登錄頁面

你必須使用

session_start();

在需要 session 變量的每個頁面的 php 腳本的開頭。

首先,我不知道$data在您的登錄 controller 的index()中做了什么,以及validate()在您的model admin中做了什么,那么我認為最好將登錄和注銷 ZC394C4252648E16在登錄 Controller 如下:

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

然后你的Dasboard Controller如下:

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

管理員model 如下:

<?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();
    }
}
?>

解決了,我實際上是錯過了拼寫“用戶名”和“密碼”,通過解決我成功登錄。謝謝你的回答

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM