session和cookie相似,都是用来存储使用者的相关信息
区别:
cookie:存在于客户端计算机中
session:存在与服务器系统下
如何使用session
在使用session时,如何在没有更改session配置文件的情况下,在php脚本中使用session,需要先进行session_start():初始化session
区别:
销毁session
第一种:bool session_destroy(void)
第二种:unset($SESSION['username'])
第三种:$_SESSION=array();
php.ini中session的相关配置
拓展:
题外:实际项目中开发通常使用session来存储用户登录的资料,因为cookie存储不安全,会暴露在浏览器中,且用户可以进行更改,而存储于session中用户没法查看到有关信息。在当前开发中,我们能看到session文件的原因是我们在windows系统下创建了一个php服务端系统,但是在实际生活中,session文件是存储于远端服务器,是看不到session文件的。
session相关配置
session的自动回收机制
当开启session会话,服务器会在指定目录创建session文件。
如果会话已过期,此时Session文件失效,php就是把失效的文件视为垃圾文件,那么垃圾文件怎么删除呢?
Session会话过期,失效的文件不会立刻删除,是通过Session的垃圾回收机制删除失效文件。
当开启一个Session会话时:
PHP会根据php.ini配置文件中session.gc_probability和session.gc_divisor两个配置项的值,来决定是否启动一个GC(Garbage Collector)。
默认情况下:
session.gc_probability = 1
session.gc_divisor =1000
也就是说有千分之一概率可能性会启动GC清除过期的session会话文件。
可以通过php.ini或者ini_set()函数来修改:
拓展内容:
token:CS架构常用,代替cookie和session建立连接
Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
单点登录:单点登录(SSO)看这一篇就够了-阿里云开发者社区