php个人总结(session和cookie)
2018-03-11 19:27
274 查看
1.cookie与session的关系
cookie和session的方案虽然分别属于客户端和服务端,但是服务端的session的实现对客户端的cookie有依赖关系的;步骤大概如下:
1.服务端执行Session机制
2.生成对应而唯一的session_id(通过对这个session_id的解析和处理,服务端可以找到,该session保存的文件;再从文件中提取出session的信息) <br/>
3.服务端会将这个session_id发送给客户端
客户端接受到session_id,以cookie作为保存的容器保存起来
4.客户端在每次请求的时候都会带这个session_id给服务端
服务端自行解析session
注意:session保存信息的手段是多种的:缓存,数据库,文件等;但是默认是文件形式保存。。。
2.创建 session和销毁session的时机
创建session的时候会附带着创建一个cookie,它的MaxAge为-1,也就是说只能存在于内存中。当浏览器端禁用cookie时,这个cookie依然会被创建。
当浏览器提交的请求中有jsessionid参数或cookie报头时,容器不再新建session,而只是找到先前的session进行关联。这里又分为两种情况:
1)使用jsessionid。该值若能与现有的session对应,就不创建新的session,否则,仍然创建新的session。
2)使用cookie。该值若能与现有的session对应,也不创建新的session;但若没有session与之对应(就如上面的重启服务器之后)容器会根据cookie信息恢复这个与之对应的session,就好像是以前有过一样。
3.session何时被销毁?
当我们关闭浏览器,再打开它,连接服务器时,服务器端会分配一个新的session,也就是说会启动一个新的会话。那么原来的session是不是被销毁了呢?我做了个小实验:
创建一个session:
根据session_id创建session对象$session_id = "qpk6onnn3husvotnke030ftcm4";
session_id($session_id);
session_start();
echo $_SESSION["username"]; //结果取出session ,所以当浏览器关闭时,原session并没有被销毁(destory方法没有执行),而是等到timeout到期,才销毁这个session。关闭浏览器只是在客户端的内存中清除了与原会话相关的cookie,再次打开浏览器进行连接时,浏览器无法发送cookie信息,所以服务器会认为是一个新的会话。因此,如果有某些与session关联的资源想在关闭浏览器时就进行清理(如临时文件等),那么应该发送特定的请求到服务器端,而不是等到session的自动清理。
cookie和session的方案虽然分别属于客户端和服务端,但是服务端的session的实现对客户端的cookie有依赖关系的;步骤大概如下:
1.服务端执行Session机制
2.生成对应而唯一的session_id(通过对这个session_id的解析和处理,服务端可以找到,该session保存的文件;再从文件中提取出session的信息) <br/>
3.服务端会将这个session_id发送给客户端
客户端接受到session_id,以cookie作为保存的容器保存起来
4.客户端在每次请求的时候都会带这个session_id给服务端
服务端自行解析session
注意:session保存信息的手段是多种的:缓存,数据库,文件等;但是默认是文件形式保存。。。
2.创建 session和销毁session的时机
创建session的时候会附带着创建一个cookie,它的MaxAge为-1,也就是说只能存在于内存中。当浏览器端禁用cookie时,这个cookie依然会被创建。
当浏览器提交的请求中有jsessionid参数或cookie报头时,容器不再新建session,而只是找到先前的session进行关联。这里又分为两种情况:
1)使用jsessionid。该值若能与现有的session对应,就不创建新的session,否则,仍然创建新的session。
2)使用cookie。该值若能与现有的session对应,也不创建新的session;但若没有session与之对应(就如上面的重启服务器之后)容器会根据cookie信息恢复这个与之对应的session,就好像是以前有过一样。
3.session何时被销毁?
当我们关闭浏览器,再打开它,连接服务器时,服务器端会分配一个新的session,也就是说会启动一个新的会话。那么原来的session是不是被销毁了呢?我做了个小实验:
创建一个session:
session_start(); //注册session变量,并且赋值 $_SESSION["username"] = "hello" //输出生成的session_id echo session_id();访问页面创建session,获取session_id,关闭浏览器;
根据session_id创建session对象$session_id = "qpk6onnn3husvotnke030ftcm4";
session_id($session_id);
session_start();
echo $_SESSION["username"]; //结果取出session ,所以当浏览器关闭时,原session并没有被销毁(destory方法没有执行),而是等到timeout到期,才销毁这个session。关闭浏览器只是在客户端的内存中清除了与原会话相关的cookie,再次打开浏览器进行连接时,浏览器无法发送cookie信息,所以服务器会认为是一个新的会话。因此,如果有某些与session关联的资源想在关闭浏览器时就进行清理(如临时文件等),那么应该发送特定的请求到服务器端,而不是等到session的自动清理。
相关文章推荐
- php----http协议 Cookie个人总结
- PHP处理会话函数session和cookie总结
- PHP中cookie与session总结
- PHP 用查询字符窜,cookie 和session 保存页面状态 的总结学习
- PHP session 跨子域问题总结 ini_set('session.cookie_domain', ".domain.com")
- 【PHP进阶篇 未完】6.会话控制(session与cookie)--慕课网【学习总结】
- 在PHP中cookie和session的使用总结
- PHP cookie和session的分析 (转)
- 关于PHP中浏览器禁止Cookie后,Session能使用吗?
- php session操作总结
- PHP cookie和session的分析(转)
- cookie 和 session 的总结
- 关于客户端关闭cookie,session是否能继续使用的问题?php
- ASP.NET保存信息总结(Application、Session、Cookie、ViewState和Cache等) .
- php中 session和cookie的基本使用
- php中cookie和session的区别
- 关于php COOKIE和SESSION的一些理解
- PHP日记——Lavarel操作cookie和session
- cookie/session总结
- node.js web开发:EXPRESS 4.x 以上使用session和cookie 的记录 - lgphp