会话技术详解

发布时间-04-来源:青锋建站作者:青锋建站

PHP中的会话支持是在并发访问时由一个方法来保存某些数据,被广泛用于保持会话状态,存储会话变量。以下是青锋建站给大家分享的有关技术的详解,包括的基本概念和原理、的配置方法、使用完成登录、回收机制、销毁、安全退出的实现。

Session的基本概念和原理

session的概念

php中Session是会话的意思,也代表浏览器和服务器之间的信息交流。Session和cookie一样能够区分浏览器(用户)的数据技术。

phpSession在cookie的基础上加强了以下几点

1、可以存储更大的数据量;

2、可以存储更多的数据类型;

3、数据存储在服务器端,更安全;

Session和cookie如何区分用户和保持同步

Session数据为了区分不同用户(浏览器),其依赖于一个特殊的cookie:

Cookie名:PHPSESSID

Cookie值:由系统分配的随机的不重复的字符串

php中Session与cookie的设置相同部分

有效周期:默认是浏览器窗口生存周期-即关闭浏览器就结束了。

有效路径:全站有效

有效域名:当前域名有效

是否仅仅https协议下有效false

是否仅仅http协议下有效false

PHP中Session的细节配置

Session在php.ini文件中配置

Session.cookie_lifetime=0;

//当前会话周期,可以设置为3600表示一小时有效,以秒为单位。

以最后一次使用为准,中间停留这个时间单位后停止。

Session.cookie_path=/;

//整站根目录

Session.cookie_domain=

没有值,表示当前站点

Session.cookie_secure=

没有值,默认表示false

Session.cookie_httponly

没有值,默认是false

Session在PHP脚本中进行配置

Ini_set(Session.cookie_lifetime,超时秒数);0表示会话周期

注意:这里的超时时间,不是再是设置cookie时的写法,(time()+秒数),而是直接写秒数!!!

Ini_set(Session.cookie_path,/);

Ini_set(Session.cookie_domain,www.bac.com);

Ini_set(Session.cookie_secure,false);

Ini_set(Session.cookie_httponly,false);

当前设置项就只在当前文件中有效,有一个函数,可以进行一次性综合设置:

Session_set_cookie_params(超时秒数,路径,域名,https,httponly)。

使用:

Session_set_cookie_params(3600,/,,false,false);

注意:这里并没有设置session标志的cookie名和其对应cookie值,因为该cookie的名(PHPSESSID)和其值,是由系统给定的。不过,在PHP.INI中,我们的确可以修改session标志的名字。

Session回收机制

什么是session回收

当一个用户进行一个网站进行一系列的session操作,就会记录相应的session数据。

通常用户做完了某些事情后,就直接关闭浏览器,此时,服务器端,就无从知道。这些存储在服务器端的session数据就成为了垃圾。我们应该有一个机制,在适合的时候删除这些垃圾。

PHP中的session垃圾回收机制

最大回收时间(即超时时间):

Session.gc_maxlifetime=超时时间;//默认是1440,即24分钟。

回收的概率分子:

Session.gc.probability=1;//

回收的概率分母:

Session.gc_divisor=1000;

上述三个设置项,可以在PHP.INI文件中配置,也可以在脚本文件中使用init_set进行设置。

回收机制的过程

在设置的超时秒数后,如果有一个请求,就会按设定的概率将该session数据删除。

销毁session数据

1、删除单个session:unset($_SESSION[名]);

2、删除所有session数据:$_SESSION=array();就是赋值为空数组;

注意:不可以这样删除:unset($_SESSION);

销毁session:关闭session机制并删除当前session的数据区及文件

执行session_destory();

执行session_destory()的作用:

session机制不再起作用(即关闭session,其后启动session的相反过程);

删除session文件对应的文件数据;

注意:只是删除当前执行程序的用户(浏览器)的session,并不影响其他使用session的用户。因此其常用场景就是退出。

php中会话技术,php session会话技术详解相关推荐

  1. 会话跟踪技术,Session和Cookie详解

    知识的广度来自知识的深度,学习如果不成体系那是多可怕的一件事儿,希望我们在未来的学习道路上坚守初心,不要给自己留下遗憾,以自己喜欢的方式生活,做自己喜欢做的事,宠爱自己,做一个独一无二的自己! 对于文 ...

  2. java 会话跟踪技术_JavaEE基础(04):会话跟踪技术,Session和Cookie详解

    一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操作结果才能和登录用户做关联. 2.概念简介 可以把会话理解 ...

  3. JavaEE基础(04):会话跟踪技术,Session和Cookie详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操 ...

  4. 容器编排技术 -- Kubernetes kubectl expose命令详解

    容器编排技术 -- Kubernetes kubectl expose命令详解 1 kubectl expose 2 语法 3 示例 4 其它详细说明 kubectl expose 将资源暴露为新的K ...

  5. 【技术综述】万字长文详解Faster RCNN源代码

    文章首发于微信公众号<有三AI> [技术综述]万字长文详解Faster RCNN源代码 作为深度学习算法工程师,如果你想提升C++水平,就去研究caffe源代码,如果你想提升python水 ...

  6. [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  7. 容器编排技术 -- Kubernetes kubectl scale 命令详解

    容器编排技术 -- Kubernetes kubectl scale 命令详解 1 kubectl scale 2 语法 3 示例 4 Flags kubectl scale 扩容或缩容 Deploy ...

  8. 容器编排技术 -- Kubernetes kubectl rolling-update 命令详解

    容器编排技术 -- Kubernetes kubectl rolling-update 命令详解 1 kubectl rolling-update 2 语法 3 示例 4 Flags kubectl ...

  9. 容器编排技术 -- Kubernetes kubectl replace 命令详解

    容器编排技术 -- Kubernetes kubectl replace 命令详解 1 kubectl replace 2 语法 3 示例 4 Flags kubectl replace 使用配置文件 ...

  10. 容器编排技术 -- Kubernetes kubectl patch 命令详解

    容器编排技术 -- Kubernetes kubectl patch 命令详解 1 kubectl patch 2 语法 3 示例 4 Flags kubectl patch 使用(patch)补丁修 ...

最新文章

  1. 使用@Autowired注入RedisTemplate时报java.lang.NullPointerException
  2. CSS 文字显示在图片的中间
  3. arcmap添加WMTS服务
  4. CTS(23) --- Android 8.1GMS注意事项
  5. php 公用方法,Laravel配置全局公共函数的方法步骤
  6. 动易html在线编辑器,动易系统解决IE8网站后台编辑器无效问题
  7. java调用import了第三方库的python脚本为啥就是出不来结果嘞
  8. Git Pull Failed:You have not concluded your merge.Exiting because of unfinished merge
  9. 活动报名 | 「将门ECCV 2020鲜声夺人云际会」踏浪而来!
  10. 微信号码检测软件是什么?2016年全新升级的微信开通状态检测
  11. Android 调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for
  12. python股票全套系统_用python来炒股三 炒股交易系统(法则)
  13. mysql interval weekday_Mysql DATE_SUB(NOW(), INTERVAL 1 DAY) 24 hours or weekday?
  14. 预告:年度乘用车前装超声波雷达市场,哪些供应商表现抢眼
  15. virtualbox中安装xp系统、安装oracle数据库到虚拟机的xp系统中、主机连接oracle、备份xp系统、oracle数据库的一些基本概念(学习oracle数据库的准备工作)-day01
  16. 什么是软件众包?软件众包有什么价值?
  17. python最简单的爬取邮箱地址_python爬取邮箱的实例代码
  18. SQL sever 实现表行列互换
  19. opencv去除图片中某一颜色(python实现)
  20. Java程序与以太坊智能合约交互

热门文章

  1. 定积分算法java_变步长梯形积分算法求解函数定积分
  2. linux配置php项目路径,linux下如何修改php.ini路径
  3. 帆软 JAVA扩展_java报表开发工具FineReport教程之报表设计:单元格扩展
  4. python跳出if条件_带你学python基础:条件控制if与循环语句while、for 以及range函数...
  5. python中回归拟合图_seaborn库:线性回归拟合图
  6. adb 提示:error: unknown host service解决方法
  7. 织梦DeDeCMS友情链接文字显示不全
  8. ●洛谷P3687 [ZJOI2017]仙人掌
  9. 记一次解决curl https证书问题
  10. My97DatePicker日历的平面显示,不是文本框点击事件后显示