seesion php取_php如何获取所有的sessionid或获取所有的session?

php获取所有的sessionid或获取所有的session的方法:session的高级用法,把session写到memcache或数据库里,就可以实现了,如果是以文件系统来驱动,你可以通过【session_save_path()】来获取。

67fc09a4f679b72d1f9db552a5818503.png

就是想通过一个.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 (包含图文、视频、案例)

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值