Session的使用

下面使用静态方法调用Session;推荐使用$_SESSION(查看全部session),可以更好了解session的作用域

    //赋值
Session::set('name','s1');
//赋值think2作用域,set(‘名称’,‘值’,‘作用域’)
Session::set('name','s2','think2'); //判断当前作用域(think)是否赋值
echo Session::has('name');
//判断think2作用域是否赋值
echo Session::has('name','think2'); //取值,当前作用域(think)
echo Session::get('name');
//取值(think2作用域)
echo Session::get('name','think2'); // 二维数组,赋值(当前作用域)
Session::set('name2.item','thinkphp');
// 判断(当前作用域)是否赋值
Session::has('name2.item');
// 取值(当前作用域)
Session::get('name2.item'); //删除(当前作用域)
Session::delete('name');
//删除(think2作用域)
Session::delete('name','think2');
//清除(当前作用域)
Session::clear();
//清除(当前作用域)
Session::clear('think2'); echo '<pre>';
print_r($_SESSION);

函数助手调用Session

    // 赋值(当前作用域)
session('name', 'thinkphp');
echo $this->request->session('name'); // 赋值think作用域
session('name', 'thinkphp', 'think');
// 判断(当前作用域)是否赋值
echo session('?name');
// 取值(当前作用域)
echo session('name');
// 取值think作用域
echo session('name', '', 'think');
// 删除(当前作用域)
session('name', null);
// 清除session(当前作用域)
session(null);
// 清除think作用域
session(null, 'think'); echo "\n";
print_r($_SESSION);

设置有效时间:

    //方法一:application/index/config.php(全局设置)
'session' => [
'id' => '',
// SESSION_ID的提交变量,解决flash上传跨域
'var_session_id' => '',
// SESSION 前缀
'prefix' => 'index',
// 驱动方式 支持redis memcache memcached
'type' => '',
// 是否自动开启 SESSION
'auto_start' => true,
//过期时间 单位秒
'path'=>TEMP_PATH,//表示session保存在自己网站根目录中的runtime目录中
'expire'=>3600*24*30,//过期时间
], //方法二:控制器
session(array('user'=>$user,'expire'=>3600)); //方法三:控制器
Session::init([
'expire'=>60*60*12
]);
Session::set("token",$access_token);

注意: 如果expire => 0,则默认session的过期时间

Cookie的使用

下面使用静态方法调用Cookie;推荐使用$_COOKIE(查看全部cookie)

    //设置Cookie 有效期为 3600秒
Cookie::set('user_name','TPshop 团队',3600);
// 设置cookie 前缀为think_
Cookie::set('user_name','TPshop 老师',['prefix'=>'think_', 'expire'=>3600]);
// 支持数组
Cookie::set('Teacher',['zhang','wang','chen','peng']);
echo Cookie::get('user_name'); // 也支持使用Cookie类直接读取
echo "<br/>";
// 获取指定前缀的cookie值
echo Cookie::get('user_name','think_');
echo "<br/>";
// 建议的读取Cookie数据的方法是通过Request请求对象的cookie方法
echo $this->request->cookie('user_name');
echo "<br/>"; //判断
echo Cookie::has('user_name');
echo "<br/>";
//判断指定前缀的cookie值是否存在
echo Cookie::has('user_name','think_');
echo "<br/>"; //删除cookie
Cookie::delete('user_name');
// 删除指定前缀的cookie
Cookie::delete('user_name','think_'); // 清空
// 清空指定前缀的cookie
Cookie::clear('think_');

使用函数助手调用Cookie

    // 助手函数
// 初始化
cookie(['prefix' => 'think_', 'expire' => 3600]);
// 设置
cookie('name', 'value123', 3600);
// 判断
echo cookie('?name');
echo "<br/>";
// 获取
echo cookie('name');
echo "<br/>";
// 删除
cookie('name', null);
// 清除
cookie(null, 'think_');

设置有效时间:

//方法一:在控制器 cookie初始化
Cookie::init(['prefix'=>'think_','expire'=>3600,'path'=>'/']);
// 方法二:设置Cookie 有效期为 3600秒
Cookie::set('name','value',3600); //方法三:config.php设置
'cookie' => [
// cookie 名称前缀
'prefix' => '',
// cookie 保存时间
'expire' => 0,
// cookie 保存路径
'path' => '/',
// cookie 有效域名
'domain' => '',
// cookie 启用安全传输
'secure' => false,
// httponly设置
'httponly' => '',
// 是否使用 setcookie
'setcookie' => true,
],

注意:'expire' => 0,默认cookie的过期时间为关联浏览器

session或cookie无效

一般情况下session和cookie都有效的,但今天我遇到了session和cookie不能保存数据。

这种情况一般是config.php的设置的问题,下面让大家看看我发现的问题:

这里设置里有效域名x.com,但我当前的域名是ljt.com;知道问题就好解决,只要把有效域名改成ljt.com,或者domain => "" 什么都不写

总结

session:存放在服务器

cookie:存放在浏览器

Cookies生存期限就到你关闭浏览器为止

ThinkPHP5——Session和Cookie的更多相关文章

  1. 理解Session与Cookie

    写在前面的话:Session和Cookie是非常有意思的两个概念,对于两者的管理可以处理的很复杂,但是无论如何,理解Session和Cookie的基本概念和发明初衷,对于问题的解决,大有裨益. === ...

  2. PHP之session与cookie

    1.session与cookie的关系 众所周知,session是存储在服务器端,cookie是存储在客户端,如果禁用了浏览器的cookie功能,很多时候(除非进行了特殊配置)服务器端就无法再读取se ...

  3. 安全退出,清空Session或Cookie

    概览: 网站中点击退出,如果仅仅是重定向到登录/出页面,此时在浏览器地址栏中输入登录后的某个页面地址如主页,你会发现不用登录就能访问.这种所谓的退出并不是安全的. 那么怎样做到安全退出呢? 那就是点击 ...

  4. 11月7日上午PHP会话控制(session和cookie)、跨页面传值

    1.session  登录上一个页面以后,长时间没有操作,刷新页面以后需要重新登录. 特点:(1)session是存储在服务器:   (2)session每个人(登陆者)存一份: (3)session ...

  5. 【荐】PHP Session和Cookie,Session阻塞,Session垃圾回收,Redis共享Session,不推荐Memcached保存Session

    什么是 Session 在 web 应用开发中,Session 被称为会话.主要被用于保存某个访问者的数据. 由于 HTTP 无状态的特点,服务端是不会记住客户端的,对服务端来说,每一个请求都是全新的 ...

  6. Session与Cookie概念

    摘:一.Session机制session是一种服务器端的状态管理技术,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息.当程序需要为某个客户端的请求创建一个session的时候,服务 ...

  7. session和cookie

    第一次听到cookie这个词的时候着实兴奋了一段时间,以为是小饼干呢~快喝一杯82年的java压压惊!哈哈~ 与cookie的第一次邂逅——清缓存和清cookie 刚毕业的时候上班,做二次开发,明明后 ...

  8. 深入理解Session与Cookie

    Session与cookie的作用都是为了保持访问用户与后端服务器的交互状态. cookie通过把所有要保存的数据通过HTTP协议的头部从客户端传递到服务端,又从服务端再传回到客户端,所有的数据都存储 ...

  9. TP中的session和cookie

    session:1.session('name','value');  //设置session2.$value = session('name');  // 获取所有的session 3.2.2版本新 ...

随机推荐

  1. ApplicationContext refresh 过程及一些重要的 processor 解析

    回顾 上文 其实我们已经实现了一个简单的 BeanFactory 它具的功能有 注册 Bean 到容器,通过限定名获取 Bean 可以拦截 Bean 初始化前后的处理 可以在 Bean 属性注入后和即 ...

  2. MySQL 语句执行过程详解

    MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 My ...

  3. python经典算法题目:找出这两个有序数组的中位数

    题目:找出这两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以 ...

  4. Elasticsearch系列---Elasticsearch的基本概念及工作原理

    基本概念 Elasticsearch有几个核心的概念,花几分钟时间了解一下,有助于后面章节的学习. NRT Near Realtime,近实时,有两个层面的含义,一是从写入一条数据到这条数据可以被搜索 ...

  5. supervisord进程管理

    一:简介 supervisord是一个进程管理工具,提供web页面管理,能对进程进行自动重启等操作. 优点: - 可以将非后台运行程序后台运行 - 自动监控,重启进程 缺点: - 不能管理后台运行程序 ...

  6. 从多维卷积说起,比较CNN中的全连接和全卷积

    一幅图像里包含三个通道,分别是RGB通道.三通道在卷积时是通过累加三个卷积结果得到的. CNN中全连接层的卷积核大小是feature map的大小.比如feature是3*3的,那么该全连接层的卷积核 ...

  7. docker-compose搭建zookeeper集群

    搭建zookeeper集群 创建docker-compose.yml文件 ``` version: '3.1' services: zoo1: image: zookeeper restart: al ...

  8. Xshell选中的同时把内容复制到剪贴板

    1.设置对话框 工具 -> 选项 -> 键盘和鼠标 -> 将选定的文本自动复制到剪贴板 2.贴图如下 2.1.打开设置对话框 2.2.设置键盘鼠标,左键复制

  9. thinkphp5中取消了3.2版本中的单字母函数,初用tp5可能不大适应,下边给出两者的对应参照表,以便查阅。

    3.2版本 5.0版本 C config E exception G debug L lang T 废除 I input N 废除 D model M db A controller R action ...

  10. ubuntu 18 怎样对Windows进行远程桌面控制

    ubuntu 18 怎样对Windows进行远程桌面控制: 1. 先安装一个redesktop 工具(sudo apt-get install redesktop) 2. 在通过 redesktop ...