как применить всю сессию во всем контроллере в codegniter?

0

У меня проблема при создании session
логин в систему, выполненный без ошибок, и я могу распечатать данные session но моя проблема

Во-первых, когда я перехожу со страницы на страницу, никаких данных session не обнаружено, и я могу открыть любую функцию, написав 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();



        }
  • 0
    да пароль хешируется
  • 0
    Только что заметил, что вы используете md5 для паролей, это не очень хороший выбор, так как они недостаточно безопасны для паролей php.net/manual/en/function.password-hash.php 255 на пароле varchar для создания хэша, и это для проверки php.net/ ручной / EN / function.password-verify.php
Показать ещё 6 комментариев
Теги:
codeigniter

1 ответ

0

autoload.php

вы должны установить свою библиотеку сеансов в файле autoload.php из папки config

/*
| -------------------------------------------------------------------
|  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 вы можете получить данные сеанса во всех contoller, а затем вы можете проверить свою сессию, что это уничтожается или нет, если ваш сеанс был уничтожен, чем вы можете перенаправить пользователя с этой страницы

Это ответ на то, как предотвратить доступ пользователей к страницам без входа

codeigniter проверяет сеанс пользователя в каждом контроллере

Я надеюсь, что это поможет вам

Ещё вопросы

Сообщество Overcoder
Наверх
Меню