欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

关于PHP对话:session和cookie

程序员文章站 2022-04-23 18:05:05
...
关于PHP会话:session和cookie

会话处理解决什么问题

HTTP(超文本传输协议)定义了通过万维网(WWW)传输文本、图形、视频和所有其他的数据的规则。HTTP是一种无状态协议,每次请求的处理,都与之前和之后的请求无关。

会话处理是这种无状态问题的解决办法。它的实现方式是为每一位网站访问者分配一个称为会话ID(SID)的唯一标志属性,然后将此SID与任意数量的数据关联。

会话处理流程

  1. 浏览器向服务器发送请求
  2. 服务器为访客建立会话ID(SID),通常SID存储在服务器端一个文件中。
  3. 存储在客户端($_COOKIE[‘PHPSESSID’]或者url参数)
  4. 浏览器再次向服务器发送请求
  5. 服务器通过读取cookie(或者url的参数)来验证SID是否依然同一次会话
  6. 离开网站,会话结束

问题

SID是如何被写到cookie中去?

PHP 会话启动以后,会给每个访客分配一个SID,这个SID同时会写到客户端的cookie中去,默认cookie变量名为:PHPSESSID。这里说同时是不确切的因为下页代码只会在刷新页面以后,才能取到cookie:

session_start();echo('SID:'.session_id().'
'
)
;echo('Cookie_sid:'.$_COOKIE['PHPSESSID'].'
'
)
;

cookie被禁用了,session会不会同时失效?

在没有做任何准备的情况下,客户端禁用cookie确实会让session失效。书上(PHP与MySQL程序设计 第三版)说,客户端存储SID的方式有两种,一种是cookie,一种是重写URL来传递。可以在php.ini文件中更改session.use_trans_sid的值,来实现url的自动重写,但笔者没有做测试。

会话在服务器端的存储方式

默认情况下,session 以文件方式存储在服务器上。在php.ini文件中可做相关设置:

session.save_handler=files session.save_path = "N;MODE;/path"

save_handler值有四个:

  1. files 平面文件
  2. mm 共享内存
  3. sqlite SQLite数据库
  4. user 用户自定义函数

通过user方式,可以用自定义函数与会话配合,看上去功能很强大。但没时间去实操。有空再研究。

版权声明:本文为博主原创文章,未经博主允许不得转载。

关于PHP对话:session和cookie

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频


网友评论

文明上网理性发言,请遵守 新闻评论服务协议

我要评论
  • 关于PHP对话:session和cookie
  • 专题推荐

    作者信息
    关于PHP对话:session和cookie

    认证0级讲师

    推荐视频教程
  • 关于PHP对话:session和cookiejavascript初级视频教程
  • 关于PHP对话:session和cookiejquery 基础视频教程
  • 视频教程分类