xluohome 发表于 2010-8-15 21:15:15

CI中实现 记住登录状态功能

编写web应用的时候, 用户登录这块肯定是少不了的,   大家应该看到过很多大的网站及应用 登录表单中有一个 "记住登录状态" 的选项, 很显然这个功能能给应用的使用者带来方便, 他只要勾选"记住登科状态"登录一次,以后就不要填写用户名密码 直接就可以登录到应用了, (当前前提是不在应用中主动退出)

下面我给将一下 如何在 CI 中使用 session 类 来实现这个"记住登录状态" ;

注: 以下描述仅提供一种解决方法, 并非是唯一的,而且关键还在于开发者自身对这个功能的理解, 否则解释清楚还是有麻烦的,

Ci 中的 session 类使用是很方便的,我看过很多开发者为了方便, 往往 在autoload定义 session 类为 自动载入;方便在 整个Ci 超类下使用;

Ci session 会话机制也是创建 cookie 然后 加密存储在本地(或数据库中) ,   读取时把cookie 解码出来,   CI session 类支持多个 session (关于多session的应用以后会写文章, 可以解决网站前台用户,后台用户等,比较方便; )       默认的 Ci session 类他只能定义失效时间(设定cookie失效时间,失效后 cookie 就会被本地浏览器自动删除了),要实现"记住登录状态" 我们需要对 session 进行动刀改造;    根据 CI 的运作机制,我们可以复制一个 session.php 到 application / libraries 下 这样就会覆盖system/libraries 下的 session.php , 我可以对application / libraries /session.php 进行改造, 来实现 "记住登科状态" 的实现;

以下是为实现这个而需要改造的地方:
session.php

定义$sess_always_time= 63072000 ;// 2年的描述

在 _set_cookie这个函数中, 加入
if (!empty($cookie_data['remember_me'])) {

$this->sess_expiration_time = $this->now + $this->sess_always_time;
}
//这个意思是 如果 我们登录时 选择 了 记住登科状态 (remember_me), 那么在 session初始化时 如果发现 remember_me 时, 将 cookie 到期时间设定为 当前时间+ 2年 后失效;

关键在于remember_me这个,在 登录时, 我们可以根据用户是否选择 "记住登录" 来讲 remember_me保存到 session 中,如果session 中有 remember_me 那么 根据上面的代码 就可以达到 cookie 永不过期, 这样也就实现了 "记住登录"

// Set the cookie
setcookie(
$this->sess_cookie_name,
$cookie_data,
$this->sess_expiration_time,
$this->cookie_path,
$this->cookie_domain,
0
);


以上只是 解决方法, 具体实现代码, 可根据实际应用进行调整;

longjianghu 发表于 2014-7-24 17:09:04

CI是开发框架,功能需要自己开发。

ibrocade 发表于 2014-7-11 21:05:42

:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol

combook 发表于 2016-5-24 11:30:51

3333333333333

zhengchao 发表于 2012-7-18 20:07:11

{:1_1:}有几个人回复呢/?????

chen_jinzhu 发表于 2012-8-13 16:49:25

1111111111

忆掉 发表于 2012-8-14 17:02:03

{:soso_e178:}

linlaoye1988 发表于 2012-8-15 18:31:22

坑爹呀

。笨才~ 发表于 2012-8-17 18:04:51

256269683 PHP CI框架 CodeIgnite交流群

ahkxhyl 发表于 2012-10-14 21:43:06

{:1_1:}{:1_1:}怎么没有内容

一切归零 发表于 2012-10-16 10:56:52

内容呢?

大道达人 发表于 2012-10-24 18:14:03

http://cier.phpfogapp.com/index.php/docs/app/template

于殿国 发表于 2013-12-28 14:42:39

有没有呢
页: [1] 2
查看完整版本: CI中实现 记住登录状态功能