Session 存储在服务端,本质上和 Cookie 没有区别,都是针对 HTTP 协议的局限性而提出的一种保持客户端和服务端间会话状态的机制。

Session 经常用来在网站的上下文间实现页面变量的传递、用户身份认证、程序状态记录等,常见的有配合 Cookie 使用、实现保存用户的登录状态或者记录用户的购物下单信息等。

在使用 Session 之前必须先开启 Session,可使用 session_start() 开启 Session,同 Cookie 一样,在开始之前不能有任何输出内容,否则会出现如下警告:

Warning: session_start(): Cannot send session cookie - headers already sent

也可以修改 php.ini 中的session.auto_start=0为session.auto_start=1,设置自动开启 Session 支持,这样就不必每次在使用 Session 的时候都加上 session_start() 了。

Session 的设置非常简单,可以直接使用以下形式:

$_SESSION[key]=value

其中 key 表示 Session 的键,所有设置的 Session 都存储在全局数组 $_SESSION 中。

当在代码中设置了 Session 时,在 HTTP 请求的消息头中会携带一个名为 PHPSESSID 的 Cookie,其值是一个 32 位十六进制的字符串。每个客户端向服务器请求时都会产生一个不同的值,如果清除浏览器的 Cookie,再次刷新页面时将会重新设置一个 PHPSESSID 的值。

服务端接收到这个 Cookie,根据其值在服务器中找到对应的 Session 文件,从而实现保持与客户端链接状态的信息,其中 Session 中存储着序列化的 Session 键值等信息。

设置了 Session 的 HTTP 请求消息头如下:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Encoding:gzip, deflate, sdch, br

Accept-Language:zh-CN,zh;q=0.8

Cache-Control:max-age=0

Connection:keep-alive

Cookie:PHPSESSID=4680c9df2ce9ac4d1aa7f366bd92d83a

Host:localhost

Upgrade-Insecure-Requests:1

User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36

如果读者想深入学习 Session,可以继续阅读:

mvc php session,PHP Session入门教程相关推荐

  1. Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)...

    在本文主要介绍如何来开发一个Stateless Session Bean,并在未安装WebLogic10的机器上访问Session Bean.开发EJB3 Stateless Session Bean ...

  2. ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用

    原文:ASP.NET Core 入门教程 2.使用ASP.NET Core MVC框架构建Web应用 一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 ...

  3. springboot 入门教程(4)--web开发(spring mvc和Thymeleaf模板,带源码)

    2019独角兽企业重金招聘Python工程师标准>>> 首先回顾下前几篇的内容:springboot 入门教程(1),springboot 入门教程-Thymeleaf(2), sp ...

  4. java mvc 小程序_[Java教程]Spring MVC 的环境搭建和入门小程序

    [Java教程]Spring MVC 的环境搭建和入门小程序 0 2017-02-17 00:00:16 1.1.下载spring框架包. 1.1.1百度搜索Spring Framework. 进入s ...

  5. ASP.NET MVC 5 入门教程 (2) 控制器Controller

    原文:ASP.NET MVC 5 入门教程 (2) 控制器Controller 文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get ...

  6. ASP.NET MVC 5 入门教程 (3) 路由route

    文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-route.html 上一节:ASP.NET MVC 5 入门 ...

  7. Asp.net MVC使用Filter解除Session, Cookie等依赖

    本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应用场景. 同时针对MVC中的对于Session,Cookie等的依赖,如何使用Filter解依赖. 如果大家有 ...

  8. ASP.NET Core 入门教程 6、ASP.NET Core MVC 视图布局入门 1

    ASP.NET Core 入门教程 6.ASP.NET Core MVC 视图布局入门 原文:ASP.NET Core 入门教程 6.ASP.NET Core MVC 视图布局入门 一.前言 1.本教 ...

  9. 【转载】PHP.INI配置:Session配置详细说明教程

    网上有很多PHP.INI文件配置的中文说明,但是对于PHP初学者来说在进行PHP运行环境搭建配置时还是容易一头雾水,今天换一种角度来分享如何进行php.ini配置,以求达到解决实际问题的效果,开篇以P ...

  10. .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比

    在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)--初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...

最新文章

  1. Openstack组件部署 — Nova_Install and configure a compute node
  2. SecureCRT安装的注意事项
  3. 中大型网站技术架构演变过程
  4. 序列密码体制(python随机数密码,RC4,线性反馈移位寄存器
  5. 大剑无锋之你所知道的列式数据库有哪些?列式数据库的好处在哪?【面试推荐】
  6. 读取xml文件转成ListT对象的两种方法(附源码)
  7. 【原创】leetCodeOj --- Find Peak Element 解题报告
  8. 【C++】凯撒密码 实现加密与解密
  9. codemirror实现SQL代码自动提示功能
  10. 将Excel数据导入到MySQL数据库
  11. 爬虫国际统计局省市区
  12. MAMP(win) Apache启动失败__句柄无效。 : master_main: create child process failed. Exiting.
  13. Unsupported operation: dart:isolate is not supported on dart4web
  14. 因为此版本的应用程序不支持其项目类型(.csproj)”之解
  15. 职业选手cfg文件怎么用_游戏id不会取?看看职业选手怎么取id吧!都是满满的干货...
  16. 问题备忘: httpclient连接池异常引发的惨案
  17. 解决VS在Release下编译程序报“应用程序无法启动,应用程序的并行配置不正确”的问题
  18. 金秋去哪儿:黑龙潭喊你带着爸妈免费去登山赏红叶
  19. linux dd命令制作软盘,【Linux】dd命令操作磁盘与镜像
  20. 电子信息工程专业就业形势分析

热门文章

  1. Java编程的逻辑 (36) - 泛型 (中) - 解析通配符
  2. 找找 Spring Event 源码中各种设计模式的使用
  3. nagios用NsClient自定义windows监控
  4. 关于Lambda和匿名内部类
  5. storm kafkaSpout 踩坑问题记录! offset问题!
  6. 基于订阅的服务通讯架构体系
  7. 在Linux上挂载Windows共享文件夹,如何开机自动挂载(mount)
  8. 如何在maven环境中设置JVM参数
  9. hadoop datajoin
  10. android 4.x环境搭建