首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复CodeIgniter-3中不工作会话

如何修复CodeIgniter-3中不工作会话
EN

Stack Overflow用户
提问于 2019-03-27 10:10:29
回答 1查看 182关注 0票数 0

我使用的是CodeIgniter 3.1.10,并尝试使用我找到的教程登录session。我认为会话不工作,因为当我单击back按钮时,页面会加载回登录页面,即使我已经登录。

下面是名为login_view的视图中的表单:

代码语言:javascript
复制
 <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>

Login_controller.php:

代码语言:javascript
复制
  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('/');
    }

Login_model.php:

代码语言:javascript
复制
 public function login($username, $password){
            $query = $this->db->get_where('user', array('username'=>$username, 'password'=>$password));
            return $query->row_array();
        }

来自config.php:

代码语言:javascript
复制
$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;

我还在autoload库中添加了'session‘。这里使用的表名是'user‘。

即使我点击了“上一步”,它也会加载我登录后进入的页面。另外,我在登录后得到了这个错误。

Error

EN

回答 1

Stack Overflow用户

发布于 2019-03-27 16:14:24

我希望这对你有帮助

代码语言:javascript
复制
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());
    } 
}

你需要替换这行

代码语言:javascript
复制
header('location:'.base_url().$this->index());
$this->session->set_flashdata('error','Invalid login. User not found');

代码语言:javascript
复制
 $this->session->set_flashdata('error','Invalid login. User not found');
 header('location:'.base_url().$this->index());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55368748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档