【问题标题】:Tempdata session expires after browser close in codeigniter浏览器在 codeigniter 中关闭后临时数据会话过期
【发布时间】:2017-07-08 12:18:28
【问题描述】:

我正在为我的网站创建登录功能。我正在使用 CI 会话。我在我的登录模型中创建了两个会话。第一个是临时的。用户,而第二个是永久用户(记住我功能)。对于第一个,我有 tempdata() 和第二个,我有 userdata()。我面临的问题是浏览器关闭后会话过期。

我的登录模型代码如下所示:

public function logger($email, $pass, $check)
        {
            $q = $this->DB->get_where('users', array('email' => $email, 'pass' => $pass));
            if($q->num_rows() == 1)
            {
                if(isset($check))
                {   
                    $this->session->set_tempdata('per_ue', $email, 86400*30);
                    $this->session->set_tempdata('per_up', $pass, 86400*30);
                    return redirect('uhome');
                } else {
                    $this->session->set_userdata('tmp_ue', $email);
                    $this->session->set_userdata('tmp_up', $pass);
                    return redirect('uhome');
                }
            } else {
                $login_error = '<p class="text-danger">Login credentials are incorrect</p>';
                $this->load->view('coders-community/login', compact('login_error'));
            }

        }

我的 config 会话设置:

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

谁能告诉我为什么 tempdata ttl (time-to-live) 在浏览器关闭后无法正常工作并销毁 tempdata session

【问题讨论】:

  • 临时会话仅在网站的一次刷新/页面加载时保持
  • 那么@Abdulla Nilam,有没有办法设置一个会话直到浏览器关闭和另一个会话直到特定时间?
  • 你还没有设置你的保存路径示例$config['sess_save_path'] = APPPATH . 'cache/';

标签: php codeigniter session


【解决方案1】:

像这样尝试。只需将$config['sess_expiration']设置为一定的时间。

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;//sets session for 2 hours
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

【讨论】:

  • 我试过了,但它设置了临时数据和用户数据的过期时间,但我不想要这个
  • 那你想在关闭浏览器后销毁会话。
  • 我想在浏览器关闭后销毁用户数据,并在特定时间后销毁临时数据,而不是在浏览器关闭后
  • 我不认为你可以分别管理用户数据和临时数据的过期。因为这两个数据都在相同的会话中工作。
  • 我使用过 cookie。这对我有用,但我对此并不满意,因为 cookie 存在巨大的安全风险
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
  • 2015-08-12
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
相关资源
最近更新 更多