如何让thinkphp在模型中自动完成session赋值小教程

相信用过thinkphp的用户都知道thinkphp的模型可以完成很多辅助功能,比如自动验证、自动完成等,今天在开发中遇到自动完成中需要获取session值

然后自动赋值的功能,具体看代码;

class ArticlelModel extends Model {

  protected $_auto = array (
    array('addtime','time',1,'function'),
    array('username','getName',1,'callback')
  );

  //这个函数获取session里的name值
  protected function getName(){
    return $_SESSION["name"];
  }
}

这里需要注意最后一个参数function和callback的区别;
function:使用函数,会自动去Common/common.php去寻找对应的函数;
callback:使用在当前模型中定义的回调方法

Session 用于Session 设置、获取、删除和管理操作
用法 session($name, $value='')
参数 name(必须):如果传入数组 则表示进行session初始化,如果传入null表示清空当前session,如果是字符串则表示session赋值、获取或者操作。
Value(可选):要设置的session值,如果传入null表示删除session,默认为空字符串
返回值 见详(根据具体的用法返回不同的值)

session函数是一个多元化操作函数,传入不同的参数调用可以完成不同的功能操作,包括下面一些功能。[-more-]
session初始化设置
如果session方法的name参数传入数组则表示进行session初始化设置,例如:
session(array('name'=>'session_id','expire'=>3600));

支持传入的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 设置值
cache_limiter session_cache_limiter设置值
cache_expire session_cache_expire设置值
type session hander类型,可以使用hander驱动扩展

Session初始化设置方法 无需手动调用,在App类的初始化工作结束后会自动调用,通常项目只需要配置SESSION_OPTIONS参数即可,SESSION_OPTIONS参数的设置是一个数组,支持的索引名和前面的session初始化参数相同。

默认情况下,初始化之后系统会自动启动session,如果不希望系统自动启动session的话,可以设置SESSION_AUTO_START为false,例如:

'SESSION_AUTO_START' =>false

关闭自动启动后可以项目的公共文件或者在控制器中通过手动调用session_start或者session('[start]') 启动session。
session赋值
Session赋值比较简单,直接使用:

session('name','value'); //设置session

相当于:

$_SESSION['name'] = 'value';

session取值

Session取值使用:
$value = session('name');

相当于使用:
$value = $_SESSION['name'];

session删除

session('name',null); // 删除name

相当于:
unset($_SESSION['name']);

要删除所有的session,可以使用:
session(null); // 清空当前的session

相当于:
$_SESSION = array();

session判断
要判断一个session值是否已经设置,可以使用
session('?name');

用于判断名称为name的session值是否已经设置
相当于:
isset($_SESSION['name']);

session管理
session方法支持一些简单的session管理操作,用法如下:
session('[操作名]');

支持的操作名包括:

操作名 含义
start 启动session
pause 暂停session写入
destroy 销毁session
regenerate 重新生成session id

使用示例如下:
session('[pause]'); // 暂停session写入
session('[start]'); // 启动session
session('[destroy]'); // 销毁session
session('[regenerate]'); // 重新生成session id

本地化支持

如果在初始化session设置的时候传入prefix参数或者单独设置了SESSION_PREFIX参数的话,就可以启用本地化session管理支持。启动本地化session后,所有的赋值、取值、删除以及判断操作都会自动支持本地化session。

本地化session支持开启后,生成的session数据格式由原来的
$_SESSION['name'] 变成 $_SESSION['前缀']['name']

假设前缀设置为think,则赋值操作:
session('name','value');  //设置session

相当于:
$_SESSION['think']['name'] = 'value';

取值操作:
$value = session('name');

相当于使用:
$value = $_SESSION['think']['name'];

删除操作:
session('name',null);

相当于:
unset($_SESSION['think']['name']);

清空操作:
session(null);

相当于:
unset($_SESSION['think']);

判断操作:
session('?name');

相当于:
isset($_SESSION['think']['name']);

(0)

相关推荐

  • ThinkPHP的模版中调用session数据的方法

    ThinkPHP框架的模板中调用session数据的方法有很多,可以很据情况灵活运用,常见的有以下几类: 1.在模板中直接调用{$Think.session}获取session: 2.在<php></php>标签直接编写php代码来调用$_SESSION数据: 3.在模板中写<?php  ?>,然后在里面直接编写php代码来调用$_SESSION: 4.在Action中将$_SESSION变量通过assign()方法赋值给模板: 5.在自定义函数库中,新建一个函数用来返

  • ThinkPHP框架实现session跨域问题的解决方法

    ThinkPHP的session跨域问题很多开发者都遇到过! 其实不管是ThinkPHP还是php本身,在解决session跨域问题的时候都需要设置session.cookie_domain. 在ThinkPHP里,需要修改配置文件conf/config.php 在第一行加上: ini_set('session.cookie_domain', ".domain.com");//跨域访问Session 经过总结,针对session跨域这一问题的解决方法主要有以下几种: 第一种情况:如果你

  • ThinkPHP实现将SESSION存入MYSQL的方法

    本文以实例讲解了ThinkPHP实现将SESSION存入MYSQL的方法,所采用的运行环境是ThinkPHP3.1.2版 首先index.php中设置为: <?php define('APP_DEBUG', true);//设置为调试模式 require '../ThinkPHP/ThinkPHP.php';//设置入口文件 ini_set("session.save_handler", "user");//设置PHP的SESSION由用户定义 在config

  • thinkPHP中session()方法用法详解

    本文实例讲述了thinkPHP中session()方法用法.分享给大家供大家参考,具体如下: 系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成. 用法 session(name,name,value='') 参数 name(必须):如果传入数组 则表示进行session初始化,如果传入null表示清空当前session,如果是字符串则表示session赋值.获取或者操作. Value(可选):要设置的session值,如果传入null表示删除sess

  • thinkPHP多域名情况下使用memcache方式共享session数据的实现方法

    本文实例讲述了thinkPHP多域名情况下使用memcache方式共享session数据的实现方法.分享给大家供大家参考,具体如下: 一.问题起源 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的网站,用户系统是统一的,即一套用户名.密码在整个网站的各个模块中都是可以登录使用的.各个服务器共享用户数据是比较容易实现的,只需要在后端放个数据库服务器,各个服务器通过统一接口对用户数据进行访问即可.但还存在一个问题,就是用户在这个服务器登录之

  • ThinkPHP关于session的操作方法汇总

    本文详细讲述了ThinkPHP关于session的各种操作方法,详情如下: ThinkPHP操作session官方的说明文档如下: start 启动session pause 暂停session clear 清除session destroy 销毁session get 获取session值 getLocal 获取私有session值 set 设置session值 setLocal 设置私有session值 name 获取或者设置session_name is_set 是否设置session值

  • ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法

    近期做一个网站的投票时,遇到ThinkPHP中的cookie和session冲突导致Cookie不能使用的情况. 该网站采用的是ThinkPHP框架制作,有一页面上面展示很多图片,要求每个图片下面有对应的投票,通过限制ip地址来,限制游客在一定时间范围内,能对多个图片投票,但是每个图片只能投票一次,开始使用ip存储在数据库解决,后来改进为使用session存储,ip在服务文件里,不过要把生成的sessionid存储在本地的cookie中,按照ThinkPHP手册说明操作session一切顺利,但

  • ThinkPHP中Session用法详解

    本文实例讲述了ThinkPHP中Session用法.分享给大家供大家参考.具体如下: 在ThinkPHP封装了Session类,用户可以直接使用,常用的方法有: Session::set(name, value):注册 session . Session::is_set(name):检查Session的值是否设置. Session::get(name):读取 session . Session::clear():清空Session. Session::destroy():销毁 session .

  • thinkphp3.x中session方法的用法分析

    本文实例讲述了thinkphp3.x中session方法的用法.分享给大家供大家参考,具体如下: 一.Session方法用于Session 设置.获取.删除和管理操作. Session 用于Session 设置.获取.删除和管理操作 用法 session($name, $value='') 参数 name(必须):如果传入数组 则表示进行session初始化,如果传入null表示清空当前session,如果是字符串则表示session赋值.获取或者操作. Value(可选):要设置的sessio

  • ThinkPHP中session函数详解

    在PHP中使用$_SESSION来操作session,而ThinkPHP提供了session的封装函数session().单单这一个函数就实现了session的增删改查的功能.下面我们分别来看其应用与实现. 该session()函数的定义是在Common/functions.php中定义. session配置 session($name='',$value='')函数有两个参数,$name为数组的时候是对session进行设置.使用如下: $name = array( 'name'=>'name

  • thinkphp中session和cookie无效的解决方法

    本文实例讲述了thinkphp中session和cookie无效的解决方法.分享给大家供大家参考.具体分析如下: 问题描述: 在本地调试时session和cookie是用没有问题的,我是用session保存当前登录账户的信息,上传服务器之后,发现跳转之后session不复存在,为什么呢?在当前页面输出session是存在的. 遇到这个问题三天了,因为是自学没有老师可以请教,身边也没有几个是弄PHP的,所以真的是很悲剧,于是乎百度,而百度上很多人都是屁话连天,没有什么可以解决问题的,经过三天的修改

  • thinkphp在模型中自动完成session赋值示例代码

    相信用过thinkphp的用户都知道thinkphp的模型可以完成很多辅助功能,比如自动验证.自动完成等,今天在开发中遇到自动完成中需要获取session值然后自动赋值的功能,具体看代码: class ArticlelModel extends Model { protected $_auto = array ( array('addtime','time',1,'function'), array('username','getName',1,'callback') ); //这个函数获取se

  • ThinkPHP自定义Redis处理SESSION的实现方法

    本文实例讲述了ThinkPHP自定义Redis处理SESSION的实现方法.分享给大家供大家参考,具体如下: 日常中我们都会使用到session来保存用户登录的信息,常用的session的保存方式有:文件保存(默认).数据库保存.Redis保存.memcached等.这里主要记录一下在用ThinkPHP处理session用Redis来保存session的用法. 1.在配置项中定义: 'SESSION_TYPE' => 'Redis', //session保存类型 'SESSION_PREFIX'

随机推荐