PHP SESSION PHPSESSID session_id()
PHPSESSID生成
生成规则是根据hash_func散列来生成的,相关的参数有:
- 客户端IP
- 当前时间(秒)
- 当前时间(微妙)
- PHP自带的随机数生产器
hash_func是phpinfo中的session.hash_function配置。如下:
; Select a hash function for use in generating session ids.
; Possible Values
; 0 (MD5 128 bits)
; 1 (SHA-1 160 bits)
; This option may also be set to the name of any hash function supported by
; the hash extension. A list of available hashes is returned by the hash_algos()
; function.
; http://php.net/session.hash-function
session.hash_function=0
PHP session工作原理
以下以cookie传输PHPSESSID描述。
1. 客户端请求一个php的服务端地址。
2. 服务端收到请求,此次php脚本中包含session_start()。
3. 服务端会生成一个PHPSESSID。(默认session存储方式为session.save_handler=files,文件形式存储。生成的session文件名规则即为sess_PHPSESSID,session文件存在session.save_path中。)
4. 服务端响应首部Response Headers:Set-Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50; path=/。在客户端生成一个cookie保存此PHPSESSID。
5. 此时,客户端的cookie里面包含了PHPSESSID,之后客户端的每次请求首部Request Headers:Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50。服务端之后每次接收到客户端的请求就都能根据这个PHPSESSID来找到服务端的session文件,通过对这个session文件的读写操作即实现了session的超全局变量属性。
如果客户端禁用了cookie,由于无法使用cookie传递PHPSESSID,那么客户端每次请求,服务端都会重新建立一个session文件,而无法通过通过PHPSESSID来重用session文件,所以session也就失效了。
这种情况可以设置session.use_trans_sid来传输PHPSESSID,具体实现方式与cookie的区别就是将PHPSESSID通过HTTP的GET传输。每次请求的地址里面都会补全PHPSESSID参数”url?PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50”来实现。
PHPcli模式通过session_id()使用session
官网说明
可以通过它来获取当前会话的PHPSESSID,也可以通过它来设置当前的会话PHPSESSID。
PHPcli模式下可以通过设置这个,达到使用session的目的,非常方便。
例如:
<?php
// session_id('vingbrv8m64asth0nhplu9gmb7');
session_start();
$_SESSION[md5(rand(100,999))] = rand(100,999);
var_dump($_SESSION);
未使用session_id()的时候,在cli模式下运营此php脚本三次:
可以看到由于cli模式下没有传输PHPSESSID,所以每次都是一次性的session使用。session没有生效。
查看下session文件:
这三个session文件是我们三次cli执行生成的。三个session文件的内容如下:
将之前的session文件删除掉,然后如果我们使用session_id(),为cli脚本设定固定的PHPSESSID。
<?php
session_id('vingbrv8m64asth0nhplu9gmb7');
session_start();
$_SESSION[md5(rand(100,999))] = rand(100,999);
var_dump($_SESSION);
然后cli运行脚本三次:
再查看下session文件,就只有一个我们设置的session文件:
文件内容:
这样,在PHPcli模式下,session就可以使用了。
session_id()的作用简略说,即为PHP脚本自己设定了PHPSESSID,而不需要传输PHPSESSID。
另外,cli模式下,session可以使用,apache的ab测试,session也就可以使用了。
PHP SESSION PHPSESSID session_id()相关推荐
- 【session】session和session_id的理解
什么是session session用来追踪每个用户的会话.使用服务器生成的session_id进行标识,用来区别用户. session存放在哪里 session存放在服务器的内存中,session_ ...
- 函数项目一个超感人的故事:关于swfupload在某些环境下面session丢失的完美解决方案(看完我哭了)...
查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! 标题吸引到你了吗? 先说一下这个题问成形的原因.大家都晓得 session是靠cookie ...
- 修改PHP session 默认时间方法
修改三行如下: 1.session.use_cookies 把这个的值设置为1,利用cookie来传递sessionid 2.session.cookie_lifetime 这个代表SessionID ...
- php session 函数,PHP中Session()函数使用
对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用. 由于 Session 是以文本文件形式存储在 ...
- session 原理
PHP中的session在默认情况下是使用客户端的Cookie来保存session id的,所以当客户端的cookie出现问题的时候就会影响session了.必须注意的是:session不一定必须依赖 ...
- php修改session生存时间,修改session的过期(生存)时间
以下我以php为例,万变不离其宗,希望对大家都有用吧. session与cookie: 了解过两者的众所都知道,有些信息保存到cookie,有些出于安全问题就不能直接存到浏览器,这就要用到sessio ...
- 【转】PHP会话Session使用详解
原文地址:http://bbs.phpchina.com/forum.php?mod=viewthread&tid=50716 对比起 Cookie,Session 是存储在服务器端的会话,相 ...
- PHP 会话(session 时间设定)使用入门
PHP 会话(session 时间设定)使用入门 在PHP开发中对比起Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Sess ...
- php开发面试题---禁用cookie之后,如何使用session
php开发面试题---禁用cookie之后,如何使用session 一.总结 一句话总结: 在每个url后面自动加上PHPSESSID的值即可,用户禁止cookie后,服务器仍会将sessionId以 ...
最新文章
- java 视图对象转换,使用spring boot开发时java对象和Json对象转换的问题_JavaScript_网络编程...
- MySQL 也替换了master、slave
- 【Docker】Linux安装docker-compose
- java主类结构设计,设计结构(1)
- 模拟课----需求文本
- MT76x8的多网口与GPIO复用配置
- 【Ubuntu】 使用Xshell5连接Ubuntu16.04
- 云鲸扫拖一体机器人说明书_云鲸扫拖一体机器人开箱测评。拖地机器人的天花板是什么样的?...
- Chrome 调试技巧 1
- 使用CLI扩展和重新平衡Couchbase集群
- Nacos集群部署说明
- python实现运动模糊图像_OpenCV+Python实现图像运动模糊和高斯模糊
- 数据结构 8-0 排序
- WebService - RoadMap
- Mac OS X:解决开机黑屏时间长(恢复秒开)
- python3命令不识别_python3不是内部命令
- 钢铁业步履蹒跚,中钢如何借助 IBM 率先实现大数据与 AI 化转型?
- C# Panel半透明
- python打印列表的下标和值的例子:
- MGC Group大公司已布局区块链食品供应链技术领域
热门文章
- X活手环的表盘自定义修改
- MATLAB小技巧(24)RBF,GRNN,PNN-神经网络
- 2.1.4 奈氏准则和香农定理
- Partical System
- Controller规范和接口定义,添加一条新数据并返回此数据的ID(主键)
- c#网络通信框架networkcomms内核解析之七 数据包创建器(PacketBuilder)
- struts2_类型转换错误消息的显示和定制
- android 类似课程表,学生好帮手 Android三款课程表软件横评
- 课程设计 树的应用与实现
- Multimodal Dual Attention Memory for Video Story Question Answering阅读笔记