关于PHP对话:session和cookie
程序员文章站
2022-04-23 18:05:05
...
关于PHP会话:session和cookie
会话处理解决什么问题
HTTP(超文本传输协议)定义了通过万维网(WWW)传输文本、图形、视频和所有其他的数据的规则。HTTP是一种无状态协议,每次请求的处理,都与之前和之后的请求无关。
会话处理是这种无状态问题的解决办法。它的实现方式是为每一位网站访问者分配一个称为会话ID(SID)的唯一标志属性,然后将此SID与任意数量的数据关联。
会话处理流程
- 浏览器向服务器发送请求
- 服务器为访客建立会话ID(SID),通常SID存储在服务器端一个文件中。
- 存储在客户端($_COOKIE[‘PHPSESSID’]或者url参数)
- 浏览器再次向服务器发送请求
- 服务器通过读取cookie(或者url的参数)来验证SID是否依然同一次会话
- 离开网站,会话结束
问题
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值有四个:
-
files
平面文件 -
mm
共享内存 -
sqlite
SQLite数据库 -
user
用户自定义函数
通过user方式,可以用自定义函数与会话配合,看上去功能很强大。但没时间去实操。有空再研究。
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
- 最新文章
- 热门排行
推荐阅读
-
浅谈COOKIE和SESSION区别
-
PHP简单实现HTTP和HTTPS跨域共享session解决办法
-
PHP cookie与session会话基本用法实例分析
-
PHP的关于变量和日期处理的一些面试题目整理
-
关于PHP递归算法和应用方法介绍
-
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
-
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
-
php中如何同时使用session和cookie来保存用户登录信息
-
PHP中cookie和session的区别实例分析
-
PHP中header和session_start前不能有输出原因分析
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论