博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于PHP会话:session和cookie
阅读量:5115 次
发布时间:2019-06-13

本文共 1092 字,大约阅读时间需要 3 分钟。

会话处理解决什么问题

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

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

会话处理流程

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

问题

SID是怎样被写到cookie中去?

PHP 会话启动以后,会给每一个訪客分配一个SID,这个SID同一时候会写到client的cookie中去,默认cookie变量名为:PHPSESSID

这里说同一时候是不确切的由于下页代码仅仅会在刷新页面以后,才干取到cookie:

session_start();echo('SID:'.session_id().'

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

');

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

在没有做不论什么准备的情况下。client禁用cookie确实会让session失效。

书上(PHP与MySQL程序设计 第三版)说。client存储SID的方式有两种,一种是cookie,一种是重写URL来传递。

能够在php.ini文件里更改session.use_trans_sid的值,来实现url的自己主动重写。但笔者没有做測试。

会话在server端的存储方式

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

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

save_handler值有四个:

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

通过user方式,能够用自己定义函数与会话配合。看上去功能非常强大。

但没时间去实操。有空再研究。

转载于:https://www.cnblogs.com/gcczhongduan/p/5222984.html

你可能感兴趣的文章
一战到底编程挑战 平衡字符串
查看>>
android点击返回键,如何做到不destory当前activity,只是stop。重新返回该activity的 时候可以直接使用,不需要创建新的activity实例...
查看>>
centos7下安装配置redis
查看>>
00xx
查看>>
软件测试_需求文档和功能文档
查看>>
spider下如何将python2代码转化为python3
查看>>
yii2_关联表
查看>>
表格元素轴定位
查看>>
[git]fork+pull提交模式
查看>>
看来我自己的路不能像原计划的那样一帆风顺呢。
查看>>
wildfly-9.0.2 web项目部署详细步骤
查看>>
CSS选择器分类总结
查看>>
Android编译输出 资源指定AAPT
查看>>
学习笔记之--初探prototype
查看>>
#测试框架推荐# test4j,数据库测试
查看>>
js的数组操作相关(BigTree*)
查看>>
【Dubbo 源码解析】03_Dubbo Protocol&Filter
查看>>
java关键字(更新)
查看>>
(转载) 上传文件进度事件,进度事件(Progress Events)
查看>>
iframe里面开启全屏allowfullscreen="true"
查看>>