首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是什么原因导致会话被重新创建或在页面刷新后消失?

是什么原因导致会话被重新创建或在页面刷新后消失?
EN

Stack Overflow用户
提问于 2013-08-18 12:32:24
回答 1查看 476关注 0票数 0

我在我的项目中使用了代码点火器,我有一个登录模块,并对每个模块进行身份验证。当会话不存在时,重定向到登录页。因此,这是可行的,但有时它可能会发生,当我登录,然后刷新页面,我被重定向到登录页面(意味着会话已经消失)。

请不要试图告诉我使用另一个库,如php本机等。我只想知道是什么问题导致了这一点。

代码语言:javascript
复制
function _admin_login()
{
    $this->form_validation->set_rules($this->login_rules);

    $data['title'] = "Login";
    $data['form_url'] = $this->uri->uri_string();   
    $data['login_btn'] = form_submit('login','Sign In','class="btn btn-large btn-block btn-primary"');


        if($this->form_validation->run($this) == FALSE){

            $data['user'] = form_input('username','','class="input-block-level input-large" placeholder="Username"');
            $data['passw'] = form_password('password','','class="input-block-level input-large" placeholder="Password"');

            $this->template->set('title','Login');
            $this->template->load('template_login','login_view',$data);

        }else{
            $username = $this->input->post('username',true);
            $row = $this->authentication_model->get_user_info($username);

            $this->session->set_userdata('user',$row['user_id']);
            $this->session->set_userdata('username',$row['username']);
            $this->session->set_userdata('login_state',true);
            $this->authentication_model->update_last_login();


                redirect('product');    
        }

}

这是我的登录脚本,如果验证通过,则会话被设置.在每个控制器中,我都检查了会话脚本。例子如下:

代码语言:javascript
复制
$this->authentication_plugin->check_logged_in();

function check_logged_in()
    {
        if(logged_in() === FALSE){
            set_alert('Login in to view this page!!','error');
            set_bookmark('login_url');
            redirect("login");
        }
    }

function logged_in()
{
    $CI =& get_instance();
    $user = $CI->session->userdata('user');

    if(!$CI->load->library('session')){
            echo "no session is loaded";
            die;
    }

    if(!empty($user)){      
        return true;
    }else{  
        return false;
    }
}

有什么想法吗?谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2013-08-18 21:02:51

  • 自动加载会话库并将其从登录脚本中删除。在config/autooload.php中查找$autoload‘库’add 'session‘
  • 在config/config.php中,向下滚动到cookie信托,并查找$config的for _ cookie _ name‘,确保cookie名称中没有下划线。您必须更改代码点火器默认名称才能做到这一点。
  • 通过在构造函数中执行会话检查来进行测试。这是一个快速的理智检查,看看这些会议是否有效。
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18299102

复制
相关文章

相似问题

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