php获取所有的sessionid或获取所有的session的方法:session的高级用法,把session写到memcache或数据库里,就可以实现了,如果是以文件系统来驱动,你可以通过【session_save_path()】来获取。
就是想通过一个.php文件读取所有的 sessionid ?或获取所有的session ??
回复讨论(解决方案)
print_r($_SESSION); print_r($_SESSION);登录后复制
我的意思是。读取所有用户,不是单一个。
比如A用户在A地区登陆产生一个SESSIONID B用户在B地区登陆产生一个SESSIONID
同时获取
所有的用户需要session数据库甚至一个session管理系统
google一下,有前人努力的成果
session的高级用法,把session写到memcache或数据库里,就可以实现了
class Session { private static $handler=null; private static $ip=null; private static $lifetime=null; private static $time=null;//初始化变量; private static function init($handler){ self::$handler=$handler; //$_SERVER["REMOTE_ADDR"]获取客户端路由地址; self::$ip = !empty($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : 'unknown'; //ini_get()获取配置文件变量; self::$lifetime=ini_get('session.gc_maxlifetime'); self::$time=time(); } static function start(PDO $pdo){ self::init($pdo); //_CLASS_ 代表本类; session_set_save_handler( array(__CLASS__,"open"), array(__CLASS__,"close"), array(__CLASS__,"read"), array(__CLASS__,"write"), array(__CLASS__,"destroy"), array(__CLASS__,"gc") ); session_start(); } public static function open($path, $name){ return true; } public static function close(){ return true; } public static function read($PHPSESSID){ $sql="select PHPSESSID, update_time, client_ip, data from session where PHPSESSID= ?"; $stmt=self::$handler->prepare($sql); $stmt->execute(array($PHPSESSID)); if(!$result=$stmt->fetch(PDO::FETCH_ASSOC)){ return ''; } if( self::$ip != $result["client_ip"]){ self::destroy($PHPSESSID); return ''; } if(($result["update_time"] + self::$lifetime) prepare($sql); $stmt->execute(array($PHPSESSID)); if($result=$stmt->fetch(PDO::FETCH_ASSOC)){ if($result['data'] != $data || self::$time > ($result['update_time']+30)){ $sql="update session set update_time = ?, data =? where PHPSESSID = ?"; $stm=self::$handler->prepare($sql); $stm->execute(array(self::$time, $data, $PHPSESSID)); } }else{ if(!empty($data)){ $sql="insert into session(PHPSESSID, update_time, client_ip, data) values(?,?,?,?)"; $sth=self::$handler->prepare($sql); $sth->execute(array($PHPSESSID, self::$time, self::$ip, $data)); } } return true; } public static function destroy($PHPSESSID){ $sql="delete from session where PHPSESSID = ?"; $stmt=self::$handler->prepare($sql); $stmt->execute(array($PHPSESSID)); return true; } private static function gc($lifetime){ $sql = "delete from session where update_time prepare($sql); $stmt->execute(array(self::$time-$lifetime)); return true; } } try{ $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456"); }catch(PDOException $e){ echo $e->getMessage(); } Session::start($pdo);登录后复制
用这个类
默认的,如果是以文件系统来驱动,你可以通过 session_save_path() 来获取session文件的存储位置。然后依次读取每个文件并反序列化。
每个用户的session id对应一个文件,这个文件以 sess_ 开头,存储在 session_save_path() 锁设定的位置。
这类不行吧
将session.save_handler改成db,然后去读那个db。不过files也可以,那你就去读session.save_path下的文件吧。
echo session_id()登录后复制
所有的sessionid只能通过session的存储目录来读取的,或者将所有session保存在数据库。
相关专题推荐:php session (包含图文、视频、案例)
免责 声明
1、本网站名称:慧达安全导航
2、本站永久网址:https//www.huida178.com/
3、本站所有资源来源于网友投稿和高价购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务!
4、本站所有资源的属示图片和信息不代表本站的立场!本站只是储蓄平台及搬运
5、下载者禁止在服务器和虚拟机下进行搭建运营,本站所有资源不支持联网运行!只允许调试,参考和研究!!!!
6、未经原版权作者许可禁止用于任何商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
7、为尊重作者版权,请在下载24小时内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
8.若资源侵犯了您的合法权益,请持 您的版权证书和相关原作品信息来信通知我们!QQ:1247526623我们会及时删除,给您带来的不便,我们深表歉意!
9、如下载链接失效、广告或者压缩包问题请联系站长处理
10、如果你也有好源码或者教程,可以发布到网站,分享有金币奖励和额外收入!
11、本站资源售价只是赞助,收取费用仅维持本站的日常运营所需
12、因源码具有可复制性,一经赞助,不得以任何形式退款。
13、本文内容由网友自发贡献和站长收集,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系1247526623@qq.com
转载请注明出处: 慧达安全导航 » php如何获取所有的sessionid或获取所有的session?
发表评论 取消回复