当前位置:  开发笔记 > 编程语言 > 正文

循环使用PHP中的所有服务器会话

如何解决《循环使用PHP中的所有服务器会话》经验,为你挑选了3个好方法。

在PHP中是否有办法获取服务器上所有会话(以及每个会话中的变量)的列表?

基本上,我们有一个维护功能,需要知道哪些用户当前登录到站点.我们已经将每个用户的数据存储在会话变量中,但我希望我可以遍历每个会话并获取我需要的数据.

我的PHP是非常有限的(我是一个.Net开发人员),但如果有人知道这是否可能(以及如何做)我将非常感激.我用谷歌搜索了这个,我发现的结果倾向于暗示这是不可能的,但我发现这很难接受.

尽管如此,如果你不能,你可以,但我认为我在StackOverflow上的好友可以给我一个明确的答案!



1> cmptrgeekken..:

PHP将每个用户的会话数据存储在服务器上的临时文件夹中.此文件夹在变量session.save_path下的php.ini配置文件中定义.从php.ini文件中找到此值,或者创建一个php文件:


作为它的内容,并在您的浏览器中打开该文件.

找到会话数据的保存路径后,打开该文件夹,您会发现一个相当简单的结构.所有会话都以以下格式存储:sess_ $ SESSIONID.

会话数据在存储到磁盘之前被序列化.因此,存储在会话文件中的对象在被使用之前必须被反序列化.但是,如果您使用按原样存储的纯文本来存储会话数据(例如$_SESSION['userid'] = 1234)以存储有关用户的信息,则应该很容易从内部解析您要查找的数据文件.

还有一件事......我没有看过它,但看起来好像文件名中出现的会话ID直接对应于存储在用户计算机上的PHPSESSID cookie的名称.因此,考虑到这一点,可以循环访问临时会话目录中的文件,获取所有$ SESSIONID值,使用设置当前会话ID session_id($SESSIONID),启动会话session_start()并通过PHP访问所需的数据,而无需解析内容文件本身.任何人都可以确认这是否可行?

编辑:调整后的帖子以匹配Itay的评论.


值得一提的是,这种黑客攻击是个糟糕的主意.PHP具有"无共享"架构,试图破解它就像使用螺丝刀种植钉子一样.而不是解析serwer内部文件创建您自己的文件,或者更好地使用数据库来保存您需要的任何内容.

2> Alastair..:

这是通过存储文件获取会话列表的更简洁方法:




3> mgroat..:

这将为您获取所有会话的数据,这些数据存储在数组中并按会话ID索引:

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有