【问题标题】:How to fix not working session in CodeIgniter-3如何修复 CodeIgniter-3 中的不工作会话
【发布时间】:2019-03-27 02:10:28
【问题描述】:

我正在使用 CodeIgniter 3.1.10 并尝试使用我找到的教程使用会话登录。我认为会话不起作用,因为当我单击后退按钮时,即使我已登录,页面也会加载回登录页面。

这是来自名为 login_view 的视图的表单:

 <form action="<?php echo base_url('index.php/Login_controller/login')?>" method="post">

        <input type="text" placeholder="Username" name="username"  id="username"/>
        <input type="password" placeholder="password" name="password" id="password" />
        <div class="text-center">
            <input type="submit" name="submit" class="button" value="LOG IN" style="border-radius: 4px;border: none;">
            <a href="signup.html" target="_blank"><div class="button">Create an account</div></a>
        </div>
        <?php
        if($this->session->flashdata('error')){
          ?>
          <div class="alert alert-danger text-center" style="margin-top:20px;">
            <?php echo $this->session->flashdata('error'); ?>
          </div>
          <?php
        }
      ?>
      </form>

登录控制器.php:

  function __construct(){
        parent::__construct();
        $this->load->helper('url');
        $this->load->model('login_model');

    }

    public function index(){
        //load session library
        $this->load->library('session');

        //restrict users to go back to login if session has been set
        if($this->session->userdata('user')){

            redirect('ask_controller/index','refresh');
        }
        else{
            $this->load->view('login_view');
        }
    }

    public function login(){
        //load session library
        $this->load->library('session');

        $username = $_POST['username'];
        $password = $_POST['password'];

        $data = $this->login_model->login($username, $password);

        if($data){
            $this->session->set_userdata('user', $data);
            redirect('ask_controller');
        }
        else{
            header('location:'.base_url().$this->index());
            $this->session->set_flashdata('error','Invalid login. User not found');
        } 
    }

    public function home(){
        //load session library
        $this->load->library('session');

        //restrict users to go to home if not logged in
        if($this->session->userdata('user')){
            $this->load->view('ask_controller');
        }
        else{
            redirect('/');
        }

    }

    public function logout(){
        //load session library
        $this->load->library('session');
        $this->session->unset_userdata('user');
        redirect('/');
    }

登录模型.php:

 public function login($username, $password){
            $query = $this->db->get_where('user', array('username'=>$username, 'password'=>$password));
            return $query->row_array();
        }

来自 config.php:

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

我还在自动加载库中添加了“会话”。这里使用的表名是'user'。

即使我点击“返回”,它也应该加载我登录后输入的页面。另外,我在登录后收到此错误。

Error

【问题讨论】:

    标签: session model-view-controller codeigniter-3


    【解决方案1】:

    我希望这对你有帮助

    public function login(){
        //load session library
        $this->load->library('session');
    
        $username = $_POST['username'];
        $password = $_POST['password'];
    
        $data = $this->login_model->login($username, $password);
    
        if($data){
            $this->session->set_userdata('user', $data);
            redirect('ask_controller');
        }
        else{
    
            $this->session->set_flashdata('error','Invalid login. User not found');
            header('location:'.base_url().$this->index());
        } 
    }
    

    你需要换行

    header('location:'.base_url().$this->index());
    $this->session->set_flashdata('error','Invalid login. User not found');
    

     $this->session->set_flashdata('error','Invalid login. User not found');
     header('location:'.base_url().$this->index());
    

    【讨论】:

      猜你喜欢
      • 2015-09-13
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 2017-01-09
      相关资源
      最近更新 更多