全面解读php-php会话控制技术
一、PHP会话控制技术
1、为什么要使用会话控制技术?
因为http协议是无状态协议,所以同一个用户在请求同一个页面两次的时候,http协议不会认为这两次请求都来自于同一个用户,会把它们当做是两次请求的独立,如果用户已经执行了登录操作,再次请求页面,http协议不会认为该用户已经做过登录,那么会话控制技术就是为了解决这个问题。
2、实现方式
- 通过GET传参。
- 通过cookie存储。
- 通过session存储。
3、cookie
cookie是服务端发送给客户端的片段信息,存储在客户端浏览器的内存或者硬盘中的技术,可以把它当做浏览器中的一个小文件,这个小文件存存了客户端的一些信息
//设置cookie
setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] ) : bool
//删除cookie
setcookie($name,'', time()-1);
cookie的优缺点:
- 优点:存储在客户端,不会占用服务器资源。
- 缺点:不够安全,敏感信息不宜存入cookie,且用户可以设置禁用cookie
- 如果 cookie被禁用了,可以通过url传递SessionID,服务器会通过这个SessionID来找到对应的session
4、SESSION
session_start() ; //开启session
$_SESSION[$key] = $val //设置session
session_destory() //销毁session
session的相关配置
//是否要自动开启session
session.auto_start //存储SessionID的cookie的有效域
session.cookie_domain //客户端的cookie存储SessionID的有效时间,默认值0表示直到浏览器关闭
session.cookie_lifetime //客户端的cookie存储SessionID的路径
session.cookie_path //cookie中SessionID的名称,默认值是PHPSESSID
session.name //session文件在服务中的存储路径
session.save_path //是否使用cookie来传递SessionID
session.use_cookies //是否使用传递的方式(即url)来传递SessionID
session.use_trans_sid 垃圾回收机制相关
//gc_probability/gc_divisor定义会话启动时垃圾回收启动的概率,gc_probability默认值为1,gc_divisor默认值为100,1/100意味着每个请求中有1/100的概率启动gc进程
session.gc_probability // 默认值为 100
session.gc_divisor //指定过了多少秒后,session数据就会被定义为垃圾进行回收。
session.gc_maxlifetime //session的存储句柄,默认是files,可以把它定义为把session存储到redis,mysql之类的地方。
session.save_handler
session的优缺点
- 优点:安全
- 缺点:
- 会占用服务器的资源
- 分布式的时候,还是要借助redis之类来保持用户登录状态,否则多台服务器之间没办法共用session。
如何传递SessionID
<a href = "test.php?<?php echo session_name() . '=' . session_id() "?>
或
<a href = "test.php?<?php echo SID "?>
SESSION的存储(分布式)
假设我现在有5台服务器,用户通过第一台登录后,并将session保存到了第一台服务器,这是跳转到下一个页面的时候,假如轮询到第四台服务器,这时在第四台服务器上就找不到这个SessionID所对应的文件了,因为session文件是在第一台服务器里面存储着的。
解决方法:
不要在用文件的方式来存储,改用内存服务器,如 redis 来进行存储,甚至使用 msql数据库直接存储也可以。
// 设置用户自定义会话存储函数
session_set_save_handler()


本文为袋鼠学习中的总结,如有转载请注明出处:https://www.cnblogs.com/chrdai/p/11154583.html
全面解读php-php会话控制技术的更多相关文章
- php会话控制技术
为什么会使用会话控制技术: 允许服务器跟踪统一用户做出的请求 setcookie($name,$value,$expire,$path,$domain,$secure) 参数:名称.值.过期时间.路径 ...
- 会话控制cookie和session
Cookie Cookie简介 HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分中两次请求是否由一个客户端发出.这样的设计严重阻碍的Web程序的设计.如:在我们进行网购时, ...
- PHP会话控制考察点
为什么要使用会话控制技术 HTTP协议是无状态的,也就是说HTTP没有一个内建的机制来维护两个事务之间的状态.当一个用户完成一个请求发起第二个请求的时候,服务器无法知道这次请求是来自于上一次的客户.而 ...
- php面试专题---8、会话控制考点
php面试专题---8.会话控制考点 一.总结 一句话总结: 主要是cookie和session的区别,以及用户禁用cookie之后怎么使用session 1.为什么要使用会话控制技术? 因为http ...
- PHP面试 PHP基础知识 八(会话控制)
---恢复内容开始--- PHP会话控制技术 首先了解一下为什么要使用会话控制技术? 本身web 与服务器的交互是通过HTTP协议来实现的,而HTTP协议又是无状态协议.就是说明HTTP协议没有一个內 ...
- 会话控制——Cookie和Session
Cookie简介 l HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分中两次请求是否由一个客户端发出.这样的设计严重阻碍的Web程序的设计.如:在我们进行网购时,买了一条 ...
- Session会话 Cookie JSTL标签
Cookie 1) HTTP是无状态协议(连接结束后就自动断开),服务器不能记录浏览器的访问状态,也就是说服务器不能区分中两次请求是否由一个客户端发出.这样的设计严重阻碍的Web程序的设计.如:在我 ...
- 关于HttpSession
HttpSession 使用Cookie有一个非常大的局限,就是如果Cookie很多,则无形的增加了客户端与服务端的数据传输量.而且由于浏览器对Cookie数量的限制,注定我们不能再Cookie中保 ...
- 干货,一文带你超详细了解Session的原理及应用
session 简介 session 是我们 jsp 九大隐含对象的一个对象. session 称作域对象,他的作用是保存一些信息,而 session 这个域对象是一次会话期间使用同一个对象.所以这个 ...
随机推荐
- Mysql 备份数据库方法及when using LOCK TABLES错误解决方法
可以将以下代码保存为backup.bat,添加计划任务即可. @echo off ,,%" ,%" "D: -uname -pxxxx -P3306 --skip-loc ...
- mysoft
@@a8649fbb56349908b5ca6708fb94b3ddabcf6b97381a9797d3dfb139b8749287117@@##74e02e1207e5a0a8996ba89f1d6 ...
- 关于Linux系统下基于Tomcat部署和升级war包的详细过程
1.首先Linux先安装java,Tomcat 中间件规范要求: 1) 软件必须下载到/services/download_soft_v --------(用xftp上传 ...
- 模拟赛小结:2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018)
比赛链接:传送门 两个半小时的时候横扫了铜.银区的所有题,签到成功混进金区.奈何后面没能开出新的题. 最后一个小时的时候xk灵机一动想出了D题的做法,讨论了一波感觉可行,赶紧去敲.结束前2分钟终于过了 ...
- java7连接数据库 网页 添加学生信息测试
石家庄铁道大学2019年秋季 2018 级课堂测试试卷(六)(10分) 课程名称: JAVA语言程序设计 任课教师: 王建民 考试时间: 150 分钟 一. 考试要求: 1登录账号 ...
- glViewport函数用法
一. 其函数原型为glViewport(GLint x,GLint y,GLsizei width,GLsizei height) x,y 以像素为单位,指定了窗口的左下角位置. width,heig ...
- SQL练习02
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+| Id | Salary |+----+--------+| 1 | 100 || ...
- java没有配置环境变量却可以生效的问题
最近在家里的电脑上安装了eclipse,安装完成后尝试打开eclipse的时候,我内心估计是要报错的.我期待看到的是,这个eclipse需要安装jdk才能运行,并且会告诉我需要的jdk版本. 结果ec ...
- The Preliminary Contest for ICPC Asia Nanchang 2019 E. Magic Master
题目:https://nanti.jisuanke.com/t/41352 思路:约瑟夫环 由题意得第k张牌即求 k 为 第几个 报数为m+1 的单位 用队列模拟即可 #include<bits ...
- javasctipt之DOM知识点
一:DOM节点 子节点:childNodes 父节点:parentNode offsetPrent 二:元素属性操作 方式一:xxx.style.xxx 方式二:xxx.style["xxx ...