Session 与 Cookie

一.Session
系统提供了 Session 管理和操作的完善支持,只需要通过 session()函数完成,该函
数可以完成 Session 的设置、获取、删除和管理操作。(session是保存在服务器端)
一般来说,在 ThinkPHP 中不需要手动初始化 session,系统会自动初始化。

参数名 说明
id session_id 值
name  session_name 值
path session_save_path 值
prefix  session 本地化空间前缀
expire  session.gc_maxlifetime 设置值
domain session.cookie_domain 设置值
use_cookies  session.use_cookies 设置值
use_trans_sid  session.use_trans_sid 设置值
type session 处理类型,支持驱动扩展

 

1 //手工初始化
2 session( array('name'=>'session_id', 'expire'=>3600));
1 //配置SESSION初始化
2 SESSION_OPTIONS=> array(
3 'name'=>'session_id',
4 'expire'=>3600,
5 ),

默认情况下,初始化之后系统会自动启动 session,所以上面初始化的代码了解即可,如果不希望系统自动启动 session
的话,可以如下设置:

在 config.php 进行配置:

1 //设置系统不启用session
2 'SESSION_AUTO_START' => false,

在 WeiBo/Home/Controller/UserController.class.php 中对 session 进行使用:

//注释的是不用时ThinkPHP框架时使用session的格式

1 //session赋值
2 session('user', 'Mr.Lee'); //$_SESSION['user'] = 'Mr.Lee';
1 //获取session值
2  echo session('user'); //echo $_SESSION['user'];
1 //session删除
2 session('user', null); //unset($_SESSION['user']);
1 //删除所有session
2 session(null); //$_SESSION=array();
1 //判断session是否存在,存在则为1,不存在则为空,而不是0
2  echo session('?user'); //isset($_SESSION['user']);
1 //暂停session,写入关闭
2 session('[pause]'); //session_write_close();
1 //启动session,可开启写入
2 session('[start]'); //session_start()
1 //销毁session
2 session('[destroy]'); //session_destroy();
1 //重新生成session id,这时服务器端不会覆盖掉原来的session id 而是重新生成一个,这时再启用null和destroy都只是删除现在最新的session id,而不是之前的
2 session('[regenerate]'); //session_regenerate_id();

 

PS:如果在初始化 session 设置的时候传入 prefix 参数或者单独设置了
SESSION_PREFIX 参数的话,就可以启用本地化 session 管理支持。

1 //SESSION前缀
2 'SESSION_PREFIX'=>'think_',

这时处理的$_SESSION['user']将变成$_SESSION['think_']['user'],而我们在
处理上没有任何区别。

 

二.Cookie

ThinkPHP 内置了一个 cookie 函数用于支持和简化 Cookie 的相关操作,该函数可以完成
Cookie 的设置、获取、删除操作。(cookie是保存在客户端)

注释后面是不用ThinkPHP时的cookie的格式

1 //cookie赋值
2 cookie('user', 'Mr.Lee'); //setcookie('user', 'Mr.Lee');
1 //cookie取值
2  echo cookie('user'); //echo $_COOKIE['user'];
1 //cookie赋值,设置过期时间,以秒计时
2 cookie('user', 'Mr.Lee', 3600);
1 //cookie赋值,第三参数数组设置过期时间和前缀
2 cookie('user', 'Lee',  array('expire'=>3600,'prefix'=>'think_'));
3 cookie('user', 'Mr.Lee', 'expire=3600&prefix=think_');
1 //cookie取值,带前缀
2 echo cookie('think_user');

PS:除了过期和前缀,还有 path(保存路径)和 domain(域)。当然也支持配置文件的
写法:COOKIE_PREFIX、COOKIE_EXPIRE、COOKIE_PATH、COOKIE_DOMAIN。

1 //cookie赋值,数组
2 cookie('user',array('Mr.', 'Lee'));
1 //cookie删除user
2 cookie('user',null);
1 //cookie删除在配置文件里指定前缀的所有
2 cookie(null);
1 //cookie删除指定前缀的
2 cookie(null, 'think_');

 

posted @ 2015-06-17 21:14  todaytoday  阅读(318)  评论(0编辑  收藏  举报