php - 如何在codeigniter中应用所有 Controller 中的所有 session ?

标签 php mysql codeigniter

创建 session 时遇到问题
登录系统没有错误,我可以打印 session 数据,但我的问题是

首先,当我从一个页面移动到另一个页面时,没有找到 session 数据,我可以通过写入我的保护的 URL 来打开任何功能,而无需在登录页面中转移我

第二:我想在所有 Controller 中应用所有 session

这是我的代码: Controller

class Users extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('session');
    //  print_r($this->session->userdata);

    }

    public function Login()
    {
        if($this->input->post("login"))
        {
            $this->load->library('form_validation');
            $this->form_validation->set_rules("username","UserName",'required|min_length[3]|max_length[30]|alpha');
            $this->form_validation->set_rules("password","password",'required|min_length[3]|max_length[30]');
            if ($this->form_validation->run())
            {
                $username=$this->input->post("username");
                $password=$this->input->post("password");
                $encpassword=md5($password);
                $this->load->model("DatabaseModel");

                if($info=$this->DatabaseModel->mainlogin($username,$encpassword))
                {
                    if(is_object($info)){

                            $session_data=array(
                                'username' => $info->username,
                                'id'       =>$info->id,
                                'email' => $info->email,
                                'image' => $info->image

                            );
                        $this->session->set_userdata($session_data);
                    }
                    $this->session->set_userdata($session_data);
                    redirect(site_url("Dashboard/index"));

                }else{
                    $this->session->set_flashdata('error', 'Error With Login ');
                    redirect(site_url("Users/login"));
                }

            }else{
                //error for validation
            }
        }

        $data['pagetitle']="IStore | Login";
        $this->load->view("users/login",$data);
        //$this->load->view("users/login");
    }

    public function logout()
    {
        $this->session->unset_userdata('username');
        $this->session->unset_userdata('id');
        $this->session->unset_userdata('email');
        $this->session->unset_userdata('image');
        redirect(site_url("Users/login"));
    }
}

这是我的数据库模型

public function mainlogin($username,$password)
{
    $this->db->select('*');
    $this->db->from("users");
    $this->db->where('username',$username);
    $this->db->where('password',$password);
    $sql=$this->db->get();
    return $sql->row();
}

最佳答案

autoload.php

你应该在config文件夹的autoload.php文件中设置你的 session 库

/*
| -------------------------------------------------------------------
|  Auto-load Libraries
| -------------------------------------------------------------------
| These are the classes located in the system/libraries folder
| or in your application/libraries folder.
|
| Prototype:
|
|   $autoload['libraries'] = array('database', 'session', 'xmlrpc');
*/


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

在 autoload.php 中设置 session 后,您可以在所有 Controller 中获取 session 数据,然后您可以检查您的 session 是否已销毁,如果您的 session 已销毁,则可以从该页面重定向用户

这是如何防止用户在未登录的情况下访问页面的答案

codeigniter check for user session in every controller

希望这对你有帮助

关于php - 如何在codeigniter中应用所有 Controller 中的所有 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49831127/

相关文章:

php - 在导航菜单中添加一个类

php - 如何在PHP中使用换行符发送电子邮件

php - 如何打印mysql报告并导出到excel

MySQL :Cannot create cluster Got Error:The server is not configured properly to be an active member of the group

变量中的MySQL存储过程语法错误

php - CodeIgniter 和 SimpleTest——如何进行我的第一个测试?

php - 超过最大文件大小不显示错误

php - fatal error :调用未定义的函数:MDB2_Driver_MYSQL::getAll()

php - Codeigniter Profiler 不显示 INSERT 和 UPDATE 查询

css - Codeigniter CSS 未加载