7、PHP的Cookie与Session操作

PHP的Cookie与Session操作

一、什么是Cookie?

Cookie是存储在客户端的一段缓存信息,一般包括服务器发送给客户端的身份验证token/Session等,由于Http无状态、无连接的特性,每当有客户端想与服务器进行数据请求等操作时,就很有可能有伪装的hacker冒充正当人员向服务器发送请求来做坏事。因此,为了保证通信的安全性,大部分的网络架构都设计服务器发送给客户端一串唯一的加密过的token字符串/或者Session,这个token/Session是有有效时间限制的(一般只在一个请求和一个响应中有效)。这样,每当客户端向服务器发送请求时,就可以携带这个服务器发送的token/Session字符串,来证明自己身份的正当性了。

什么是Session?

Session是一种会话管理技术,服务器将每对连接会话所产生的键值信息保存到一个名为session id(唯一随机字符串)的缓存文件中,并将这个session id返回给客户端在Cookie中保存,在这段会话连接中客户端向服务器发送数据请求时会携带这个session id,服务器根据session id来对会话数据进行访问。

php session 有效期

php的session有效期默认是1440秒(24分钟),如果客户端超过24分钟没有刷新,当前session会被回收,失效。
当用户关闭浏览器,会话结束,session也会失效。

可以修改php.ini的session.gc_maxlifetime来设置session的生命周期,但并不能保证在超过这一时间后session信息立即会删除。因为GC是按机率启动的,可能在某一个长时间内都没有被启动。那么大量的session在超过session.gc_maxlifetime后仍然有效。

二、PHP的Cookie相关操作

1
2
3
4
5
6
7
8
9
10
11
12
<-----服务器发送Cookie----->
setcookie(name, value, expire, path, domain, secure,httponly) => bool
# name:Cookie名称
# value:Cookie值
# expire:过期时间,是一个Unix时间戳,使用time()获得Unix纪元时间
# path:有效的服务器路径
# domain:发放Cookie的服务器域名
# secure:True表示只在https中传输Cookie给客户端
# httponly:仅支持HTTP协议访问Cookie值,不支持JS等脚本访问,为了防止XSS

<-----服务器接受与访问Cookie----->
$_COOKIE

三、PHP的Session相关操作

1
2
3
session_start();    #此php页面开启session机制,下发和验证session;也可以配置文件开启此功能,可参考手册
$_SESSION #对此段会话连接中的SESSION数据的访问与写入
session_destory(); #销毁当断会话数据

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器