记住我在codeigniter中的功能

时间:2012-03-15 04:36:39

标签: codeigniter

我已经实现了记住我作为这个问题的功能

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

2 个答案:

答案 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'];
}

这对我来说很好。