什么是session

在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据为用户服务。

Session代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续的。Session是一种服务器端的机制,Session 对象用来存储特定用户会话所需的信息。

工作原理

1、创建Session

当用户访问到一个服务器,如果服务器启用Session,服务器就要为该用户创建一个SESSION,在创建这个SESSION的时候,服务器首先检查这个用户发来的请求里是否包含了一个SESSION ID,如果包含了一个SESSION ID则说明之前该用户已经登陆过并为此用户创建过SESSION,那服务器就按照这个SESSION ID把这个SESSION在服务器的内存中查找出来(如果查找不到,就有可能为他新创建一个),如果客户端请求里不包含有SESSION ID,则为该客户端创建一个SESSION并生成一个与此SESSION相关的SESSION ID。这个SESSION ID是唯一的、不重复的、不容易找到规律的字符串,这个SESSION ID将被在本次响应中返回到客户端保存,而保存这个SESSION ID的正是COOKIE,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。

2、使用Session

我们知道在IE中,我们可以在工具的Internet选项中把Cookie禁止,那么会不会出现把客户端的Cookie禁止了,那么SESSIONID就无法再用了呢?找了一些资料说明,可以有其他机制在COOKIE被禁止时仍然能够把Session id传递回服务器。

经常被使用的一种技术叫做URL重写,就是把Session id直接附加在URL路径的后面一种是作为URL路径的附加信息,表现形式为:

http://…./xxx;jSession=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764;

另一种是作为查询字符串附加在URL后面,表现形式为:

http://…../xxx?jSession=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

还有一种就是表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把Session id传递回服务器。

session的作用

Session用于保存每个用户的专用信息,每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右)。

Session中的信息保存在Web服务器内容中,保存的数据量可大可小。当 Session超时或被关闭时将自动释放保存的数据信息。由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低。对于小量的数据,使用Session对象保存还是一个不错的选择。

更多相关知识,请访问 PHP中文网!!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php session有什么用,session有什么作用?相关推荐

  1. spring session 退出登录 清理session

    2019独角兽企业重金招聘Python工程师标准>>> spring session 退出登录 清理session 博客分类: spring /*** Allows creating ...

  2. java session 作用范围_ssm项目session使用及其作用域问题

    这两天由于自己在前端用到ajax发起异步更新请求,发现ajax会暴露后端的接口地址,这个问题当然是避免不了的啦,前端都是明文.可怜于是就在百度.谷歌.QQ群里各种查询各种提问题,都说只能通过安全验证去 ...

  3. Spring Session - Cookie VS Session VS Token 以及 Session不一致问题的N种解决方案

    文章目录 Cookie VS Session VS Token History Cookie Session Token Session不一致问题 Session不一致解决方案 nginx sessi ...

  4. ajax得到session,Ajax如何使用Session

    在Ajax中有时会使用到Session,在aspx.cs文件这样获取: string name = Session["name"]; 但是在Ajax中就不能这样获取Session, ...

  5. Nhibernate中session的状态与session.connection.state状态的差别的解释

    在项目中用到了nhibernate,但是需要判断数据连接的状态,在NHIbernate的文档中找了半天,英文的中文的都看了一遍,都没找到相关的说明 .后来在Hibernate的论坛上才找到了一些说明. ...

  6. Cookie和Session-学习笔记03【Session快速入门、Session细节】

    Java后端 学习路线 笔记汇总表[黑马程序员] Cookie和Session-学习笔记01[Cookie_快速入门.Cookie_细节] Cookie和Session-学习笔记02[Cookie案例 ...

  7. java session创建_request创建session

    如何在 Java 中创建 session ? 使用request对象获取session,然后进行操作. 1,引入包servlet-api.jar . 2,使用request获取session:Http ...

  8. php java session共享_PHP实现session共享

    确认实验环境: proxy: # nginx # systemctl start memcached # ss -ntulp | grep 80 #这个80端口是nginx # ss -ntulp | ...

  9. 会话Cookie及session的关系(Cookie Session)

    会话Cookie及session的关系(Cookie & Session) 在通常的使用中,我们只知道session信息是存放在服务器端,而cookie是存放在客户端.但服务器如何使用sess ...

  10. PHP 分布式集群中session共享问题以及session有效期的设置

    一.Session的原理 以下以默认情况举例: session_start();之后,会生成一个唯一的session_id,每一个用户对应唯一一个session_id,每一个session_id对应服 ...

最新文章

  1. 逃课上网吧编程、玩摇滚的另类学生,逆袭成长为独角兽公司的 CTO
  2. C语言多种方法实现同一个功能
  3. 计算机C语言常用语句,计算机二级C语言考试常见知识积累
  4. Python easy_install
  5. C4D插件:Springy for Mac 动​​画对象添加重叠动作插件
  6. php设计一个盒子类代码_PHP设计模式之备忘录模式(Memento)代码实例大全(25)...
  7. MySQL 之 约束 (主键、唯一、非空、自增、外键)
  8. 省市区三级行政区划数据JS插件
  9. GPS卫星星历与历书
  10. 如何导出mysql数据库
  11. 在群晖(Synology) 中运行115网盘Linux版(docker)
  12. excel两个表格数据对比_表格技巧—Excel表格两列数据合并
  13. 营销哲学:小胜凭智,大胜靠德
  14. Ant Deign Pro - ProTable - 高级表格 通用打印组件
  15. Mac制作windows10安装U盘
  16. pc计算机属于第几代,i5 vPro是第几代?十一代vPro平台你了解吗?
  17. Swiper:无限循环滚动时出现空白页/页面内容不刷新
  18. 内存不能为“read”或“written”的解决方案
  19. 2021-6-7-今日收获
  20. 3D MAX脚本教程1

热门文章

  1. OpenCV2和OpenCV3兼容安装
  2. 渗透测试入门12之渗透测试简介
  3. AGC 027D.Modulo Matrix(构造 黑白染色)
  4. python里面的数学
  5. [包计划] cheerio
  6. 【转载】Eclipse vs IDEA快捷键对比大全(win系统)
  7. MacBook搭建go语言开发环境
  8. python之-- 异常
  9. 解决ios上微信无法捕获返回键按钮事件的问题
  10. Project Server 2010 好难装阿!