• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ThinkPHP中的session函数的用法

php 搞代码 3年前 (2022-01-22) 21次浏览 已收录 0个评论

这篇文章主要为大家详细介绍了ThinkPHP中session函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

在PHP中使用$_SESSION来操作session,而ThinkPHP提供了session的封装函数session()。单单这一个函数就实现了session的增删改查的功能。下面我们分别来看其应用与实现。

该session()函数的定义是在Common/functions.php中定义。

session配置

session($name='',$value='')函数有两个参数,$name为数组的时候是对session进行设置。使用如下:

$name = array(     ‘name'=>'name',     ‘path'=>'/tmp/',     ‘expire'=>0);session($name);

这些是在开启session之前进行设置的。在ThinkPHP中定义该函数的时候是先判断$name是否为数组,如果为数组的话就说明是在对session进行设置,然后进入相应的代码执行设置。

其实现代码如下:

if(is_array($name)) { // session初始化 在session_start 之前调用  if(isset($name['prefix'])) C('SESSION_PREFIX',$name['prefix']);  if(C('VAR_SESSION_ID') && isset($_REQUEST[C('VAR_SESSION_ID')])){    session_id($_REQUEST[C('VAR_SESSION_ID')]);  }elseif(isset($name['id'])) {    session_id($name['id']);  }  if('common' != APP_MODE){ // 其它模式可能不支持    ini_set('session.auto_start', 0);  }  if(isset($name['name']))   session_name($name['name']);  if(isset($name['path']))   session_save_path($name['path']);  if(isset($name['domain']))  ini_set('session.cookie_domain', $name['domain']);  if(isset($name['expire'])) {    ini_set('session.gc_maxlifetime',  $name['expire']);    ini_set('session.cookie_lifetime', $name['expire']);  }  if(isset($name['use_trans_sid'])) ini_set('session.use_trans_sid',$name['use_trans_sid']?1:0);  if(isset($name['use_cookies'])) ini_set('session.use_cookies', $name['use_cookies']?1:0);  if(isset($name['cache_limiter'])) session_cache_limiter($name['cache_limiter']);  if(isset($name['cache_expire'])) session_cache_expire($name['cache_expire']);  if(isset($name['type']))  C('SESSION_TYPE',$name['type']);  ……}

在ThinkPHP中,对于session的存储系统提供了mysql和memache两种数据库。当然默认情况下是使用文件存储。判断session存储方式的代码如下:

if(C('SESSION_TYPE')) { // 读取session驱动  $type = C('SESSION_TYPE');  //系统调用mys<p style="color:transparent">。本文来源gao!%daima.com搞$代*!码网1</p><cite>搞代gaodaima码</cite>ql驱动程序$class = strpos($type,'\\')? $type : 'Think\\Session\\Driver\\'. ucwords(strtolower($type));$hander =  new $class(); //实例化处理器//注册处理器  session_set_save_handler(     array(&$hander,"open"),    array(&$hander,"close"),    array(&$hander,"read"),    array(&$hander,"write"),    array(&$hander,"destroy"),    array(&$hander,"gc")  );}

对于session存储系统的配置是通过配置选项SESSION_TYPE来设置的。

SESSION_TYPE=>'Mysql' //将session存储在mysql数据库中

设置完成以后如果设置了session自动启动,那系统会自动开启session

// 启动sessionif(C('SESSION_AUTO_START')) session_start();

如果想关闭session自启动,对选项SESSION_AUTO_START设置如下:

SESSION_AUTO_START => false

如果关闭了系统自启动,可以在项目的公共文件或者在控制器中通过手动调用session_start()来开启session。或者使用函数session(),其开启方法如下:


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ThinkPHP中的session函数的用法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址