我已经实现了记住我作为这个问题的功能
How to create "remember me checkbox" using Codeigniter session library?
第一个回答。 我创建了一个带有随机数代码作为值的cookie,它存储在db(用户表)中。在登录时,db代码检查cookie值。它在我的localhost服务器上正常工作。但是在具有子域url的live server中有问题。我还用另一个ip地址为url的服务器测试了它。它也没有用。在这两种情况下,cookie都已创建,但无法读取cookie。请帮帮我。
由
设置的Cookie$auto_login_hash_code = uniqid();
$domain = $_SERVER['SERVER_NAME'];
$cookie = array(
'name' => 'rememberMe',
'value' => $auto_login_hash_code,
'expire' => 31536000,
'domain' => $domain,
'path' => '/'
);
$this->input->set_cookie($cookie);
并通过
阅读cookie if (get_cookie('rememberMe')) {
$hashcode = $this->CI->input->cookie('rememberMe');
$this->CI->load->model('loginmodel', '', true);
$username = $this->CI->loginmodel->get_username_by_hashcode($hashcode);//in this function setting session variables
}
提前致谢 iijb
答案 0 :(得分:1)
你正在github上获取库。 搜索在github上记住我,加载它,然后按照以下步骤操作。 如果数据库中存在令牌,则验证cookie转到主页
$this->load->library('rememberme');
$cookie_user = $this->rememberme->verifyCookie();
if ($cookie_user)
{
$this->load->view('search_view');
}
else
{
// If checkbox is checked it return true either false
$checked = (isset($_POST['Checkbox1']))?true:false;
if($checked== true)
{
//$this->load->view('tested');
$this->load->library('rememberme');
$this->rememberme->setCookie($this->input->post('loginemil'));
//$this->rememberme->setCookie('set cookie here');
}
else{
dont set anything
}
}
答案 1 :(得分:0)
这也可以通过编辑/扩展系统会话库来完成。
首先:在用户登录功能中添加记住我检查 -
if($remember)
{
$data['new_expiration'] = 60*60*24*30;//30 days
$this->session->sess_expiration = $data['new_expiration'];
}
$this->session->set_userdata($data);
第二:编辑系统会话库[我不确定扩展会话是否有效]
转到sess_read()
方法
if (($session['last_activity'] + $this->sess_expiration) < $this->now)
在该行之前添加以下代码
if(isset($session['new_expiration'])){
$this->sess_expiration = $session['new_expiration'];
}
这对我来说很好。