在codeigniter中使用cookie登录时记住我复选框

Posted

技术标签:

【中文标题】在codeigniter中使用cookie登录时记住我复选框【英文标题】:remember me checkbox in login using cookie in codeignitor 【发布时间】:2020-05-04 07:33:38 【问题描述】:

我想在单击记住我复选框时保存电子邮件和密码,并且应该在记住我时设置 cookie。登录工作正常。请帮助我使用 codeignitor 中的代码这是我的控制器代码:

       public function loginaction()
        

       $email=$this->input->post('email');
            $password=$this->input->post('password');
            $where = array('email'=>$email,'password'=>$password);
            $tbname='login';
            $query = $this->Insert_Model->viewdata($tbname,$where);

                    if(empty($query))
                    
                        $data['msg']="Invalid email or password";
                        $this->load->view('login',$data);
                     
                    else 
                    
                        redirect('dashboardv1');
                    



        

下面是我实现的 cookie 代码:

function set()

   

       $cookie= array(

           'name'   => 'chkremember',
           'value'  => 'test',                            
           'expire' => '300',                                                                                   
           'secure' => TRUE

       );

       $this->input->set_cookie($cookie);



   



   function get()

   

       echo $this->input->cookie('chkremember',true);

   

【问题讨论】:

cookie 代码在哪里? 我编辑了帖子。请看看它现在是否清楚。 你需要添加helper cookie $this->load->helper('cookie') 【参考方案1】:

首先你必须包括我在评论部分提到的 cookie 助手

之后在你的控制器中

public function loginaction()
    
        $this->load->helper('cookie');
        $email=$this->input->post('email');
        $password=$this->input->post('password');
        $where = array('email'=>$email,'password'=>$password);
        $tbname='login';
        $query = $this->Insert_Model->viewdata($tbname,$where);

                if(empty($query))
                
                    $data['msg']="Invalid email or password";
                    $this->load->view('login',$data);
                 
                else 
                
             //first you have to delete old cookie and create new one
                delete_cookie("email");
                delete_cookie("password");
                if ($this->input->post('remember') == 'true') 

                  $userName = array(
                    'name' => 'email',
                    'value' => YOUREMAIL,
                    'expire' => '86500',
                    'prefix' => '',
                    'secure' => FALSE
                  );
                  $this->input->set_cookie($userName);

                  $password = array(
                    'name' => 'password',
                    'value' => YOURPASSWORD,
                    'expire' => '86500',
                    'prefix' => '',
                    'secure' => FALSE
                  );
                  $this->input->set_cookie($password);
                
                    redirect('dashboardv1');
             
    

在下面的代码中获取你可以使用的cookie

<?php echo get_cookie('email'); ?>
<?php echo get_cookie('password'); ?>

【讨论】:

非常感谢..您的代码运行良好。你能帮我在控制器中使用注销功能吗?我希望表单字段保持填写电子邮件和密码,用户登录时选择记住我复选框。 谢谢,请为答案投票,以便其他开发人员可以使用这些代码。您只需在输入字段中使用&lt;?php echo get_cookie('email'); ?&gt; 作为值。并检查是否为isset get_cookie('email') 然后记住我的复选框是否选中。而您的注销控制器只需取消设置会话,无需在 cookie 中执行任何操作。

以上是关于在codeigniter中使用cookie登录时记住我复选框的主要内容,如果未能解决你的问题,请参考以下文章

如何在codeigniter中设置持久登录?

Iphone 上的 Codeigniter 会话问题

在 codeigniter 中使用 HTTPOnly 标志设置 cookie

CodeIgniter:cookies、会话、太多重定向?

在我的 CodeIgniter 助手中获取 cookie 值

cookies / MAMP / CodeIgniter的问题