Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在codeigniter的所有控制器中应用所有会话?_Php_Mysql_Codeigniter - Fatal编程技术网

Php 如何在codeigniter的所有控制器中应用所有会话?

Php 如何在codeigniter的所有控制器中应用所有会话?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我在创建会话时遇到问题 登录到系统没有错误,我可以打印会话数据,但我的问题是 首先,当我从一个页面移动到另一个页面时,没有会话找到数据,我可以通过写入我的保护URL打开任何函数,而无需在登录页面中传输我 第二:我想在所有控制器中应用所有会话 这是我的代码: 控制器 class Users extends CI_Controller { public function __construct() { parent::__construct(); $t

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

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

第二:我想在所有控制器中应用所有会话

这是我的代码: 控制器

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文件中设置会话库

/* | ------------------------------------------------------------------- | 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'); /* | ------------------------------------------------------------------- |自动加载库 | ------------------------------------------------------------------- |这些类位于system/libraries文件夹中 |或在应用程序/库文件夹中。 | |原型: | |$autoload['libraries']=array('database','session','xmlrpc'); */ $autoload['libraries']=数组('session'); 在autoload.php中设置session之后,您可以在all contoller中获取会话数据,然后您可以检查您的会话是否已销毁,如果您的会话已销毁,则可以从该页面重定向用户

这是如何防止用户不登录就访问页面的答案


我希望这将帮助您

是密码哈希刚才注意到您正在使用md5作为密码不是一个好的选择,因为密码varchar上的密码255不再足够安全,因此无法创建哈希,为了验证是否确定,我稍后将转换md5放入我希望您帮助我在我的所有应用程序控制器中应用会话?我建议自动加载config/autoload.php中的会话库,然后您可以访问任何控制器中的会话库。