Processing math: 100%

session_id()和session_regenerate_id()对原来session文件和其中数据是怎么处理的

简介:   一、session_id()对原来session文件和里面的数据,是怎么处理的?   测验办法:   是新创建一个session文件。那么原来PHPSESSID对应的服务器上的数据就不会用到了,因为新创建了一个文件。

 

 



一、session_id()对原来session文件和里面的数据,是怎么处理的?

 



测验办法:
<?php

sid=md5("aaad");sessionid(sid);
session_start();
var_dump(session_id());
$_SESSION['ddd'] = 123;


?>

 



是新创建一个session文件。

那么原来PHPSESSID对应的服务器上的数据就不会用到了,因为新创建了一个文件。

 

 

二、研究上面这个有什么用途?

 

业务中需要

 

 

问题的背景:
 * um.mama.cn/passport 和passport.mama.cn都是访问新版本passport系统。
 *
 * 当app跳转到网页时,app先在打开的webview中,请求passport的一个接口。
 * app>>>>>http://passport.mama.cn/appapi/setWebViewSession?app_code=xxx
 * passport验证成功后,会设置webview为登录状态(即把登录状态存储到memcache)
 *
 * 但,网页访问的域名却是um.mama.cn/passport,两个域名不同,PHPSESSID就不同。之前设置的登录状态无法同步到um.mama.cn域名
 *
 * 目前思路是:登录状态是放在共享位置-memcache中,登录状态要想共享,让两个域名的PHPSESSID保持一样即可。同样的sid,可以去memcache查询数据。
 *
 * 具体做法是:
 * app请求接口时,设置登录状态后,顺便将passport.mama.cn的sid备份到一个让passport.mama.cn也能读取的公共域名下:mama.cn
 * 进入um.mama.cn时候,从mama.cn获取备份的sid,于是将um.mama.cn的sid重置

 

代码如下:

<?php

if(isset(_COOKIE['app_passport_login_sid']) &&_COOKIE['app_passport_login_sid']){
    
    sid=trim(_COOKIE['app_passport_login_sid']);
    session_id(sid);setcookie(sessionname(),sid, time()+86400, '/');
    session_start();
    //这个cookie用完毕后删除掉,避免影响
    setcookie('app_passport_login_sid', $sid, time()-86400, '/','.mama.cn');
}

 

?>

 

 

我想知道session_id()重置为指定的sid,有以下疑惑,解决这些疑惑以便评估对业务的影响:

重置为一个sid,是新创建一个session文件?还是把原来的session文件重命名即可呢?

如果是新创建一个新的session文件,那么:php会对原来的磁盘上的session文件怎么处理呢?

 

 

通过上面的试验,答案为:

1、只是新创建一个session文件。而且是一个空文件。以前文件的数据并不会带到新文件中

2、原来的session文件并不会删除掉。保留在磁盘上。估计是垃圾回收机制的时候会自动删除?

 

 

 

三、顺便研究session_regenerate_id()对原来的session文件和数据的处理方式

 

只是将原来的文件名称重命名为一个新的么。这样数据还是在的。


session_regenerate_id() 在不修改当前会话中数据的前提下使用新的 ID 替换原有会话 ID。


delete_old_session

    是否删除原 ID 所关联的会话存储文件。


这个看介绍:拷贝一份原来的session数据文件,然后重命名为一个新的sid名称

比如,session_sid1 新建了一个文件 session_sid2

原来的数据文件会带到新的session文件中去的。



测验办法:

session_start();
session_regenerate_id();
var_dump(session_id());



 

目录
打赏
0
0
0
0
6
分享
相关文章
kde
|
2天前
|
Docker镜像加速指南:手把手教你配置国内镜像源
配置国内镜像源可大幅提升 Docker 拉取速度,解决访问 Docker Hub 缓慢问题。本文详解 Linux、Docker Desktop 配置方法,并提供测速对比与常见问题解答,附最新可用镜像源列表,助力高效开发部署。
kde
987 3
2025年最新版最细致Maven安装与配置指南(任何版本都可以依据本文章配置)
本文详细介绍了Maven的项目管理工具特性、安装步骤和配置方法。主要内容包括: Maven概述:解释Maven作为基于POM的构建工具,具备依赖管理、构建生命周期和仓库管理等功能。 安装步骤: 从官网下载最新版本 解压到指定目录 创建本地仓库文件夹 关键配置: 修改settings.xml文件 配置阿里云和清华大学镜像仓库以加速依赖下载 设置本地仓库路径 附加说明:包含详细的配置示例和截图指导,适用于各种操作系统环境。 本文提供了完整的Maven安装和配置
2025年最新版最细致Maven安装与配置指南(任何版本都可以依据本文章配置)
Dify MCP 保姆级教程来了!
大语言模型,例如 DeepSeek,如果不能联网、不能操作外部工具,只能是聊天机器人。除了聊天没什么可做的。
339 4
Excel数据治理新思路:引入智能体实现自动纠错【Python+Agent】
本文介绍如何利用智能体与Python代码批量处理Excel中的脏数据,解决人工录入导致的格式混乱、逻辑错误等问题。通过构建具备数据校验、异常标记及自动修正功能的系统,将数小时的人工核查任务缩短至分钟级,大幅提升数据一致性和办公效率。
Go语言实战指南 —— Go中的反射机制:reflect 包使用
Go语言中的反射机制通过`reflect`包实现,允许程序在运行时动态检查变量类型、获取或设置值、调用方法等。它适用于初中级开发者深入理解Go的动态能力,帮助构建通用工具、中间件和ORM系统等。
140 62
让AI时代的卓越架构触手可及,阿里云技术解决方案开放免费试用
阿里云推出基于场景的解决方案免费试用活动,新老用户均可领取100点试用点,完成部署还可再领最高100点,相当于一年可获得最高200元云资源。覆盖AI、大数据、互联网应用开发等多个领域,支持热门场景如DeepSeek部署、模型微调等,助力企业和开发者快速验证方案并上云。
196 15
让AI时代的卓越架构触手可及,阿里云技术解决方案开放免费试用
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
182 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问