php 会话跟踪
[toc] //md 内容表
会话跟踪
- web 应用程序是使用 HTTP 协议传输数据的;HTTP 协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这意味着服务器无法从连接上跟踪会话
- 会话跟踪是 Web 程序中常用的技术,用来跟踪用户的整个会话。(数据的跨页面传值)
- 网页间数据传递的方式
- 超链接
<a href='index/index?id=1'></a>
- PHP 的
header()
函数,将一个函数从一个脚本传到另一个脚本- cookie、session 和 token
一. cookie
- 把用户的资料储存在客户端计算机/硬盘/浏览器上
- PHP 中的
setCookie()
函数可以设置cookie
- 如果不设置 setCookie()的过期时间,会在浏览器关闭后自动销毁
一般格式:
setCookie(cookie名,cookie值,cookie过期时间)
1.储存 cookie 1 小时
setCookie("uname",'admin', time()+3600);
2.读取 cookie
$_COOKIE[cookie名]
3.销毁 cookie
setCookie("uname",'admin', time()-3600);
需要刷新 2 次
4.查看 cookie
1.可以在 Network 中的 Headers 请求头/响应头里查看
2.可以在 Console 里,输入 document.cookie 查看
3.可以在 Application 中的 Storage 可以查看 session/cookies
二. session(可实现页面之间数据共享)
- 把用户的资料储存在服务器上
php.ini 里有 session 相关配置
1.开启 session
<?session_start()?>
须在文件最顶端书写
2.存入会话
$-SESSION['uname'] = $value
3.读取 session
<?=$_SESSION['uname']?>
4.销毁 session
4.1 以下 2 种删除 session 信息 并不会删除 session 文件
unset($_SESSION['uname']);
$_SESSION = [];
4.2 彻底删除文件
session_destroy();
5.垃圾回收 session
5.1 清理次数
session.gc_probablity = 1;
5.2 session 开启次数
session.gc_divisor = 100;
5.3 过期时间
session.gc_maxlifetime = 1440;
即每 100 次开启 session, 就有 1 次, 会清理掉最后修改时间至今超过 1440s 的 session 文件
6.session 是基于 session id 的查询方式
三.session 与 cookie 的差别
cookie:通过在客户端记录信息确定用户身份
session:通过在服务器端记录信息确定用户身份
- cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗考虑到安全应该使用 session
- session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用 cookie
- 单个 cookie 保存的数据不能超过 4k,很多浏览器都限制一个站点最多保存 20 个 cookie
四.token
- 原理:用户登录以后 php 连接 mysql 验证用户名/密码,验证成功以后,返回一个 token
- 明文变密文 openssl_encrypt,密文变明文 openssl_decrypt