PHP ですべてのセッション ID を取得する方法、またはすべてのセッションを取得する方法: セッションの高度な使用法。セッションを memcache またはデータベースに書き込むことができ、ファイル システムによって駆動される場合は、[session_save_path()] を使用して取得できます。
.php ファイルを通じてすべてのセッション ID を読み取りたいだけですか?それともすべてのセッションを取得しますか? ?
print_r($_SESSION); print_r($_SESSION);
つまり。 1 人のユーザーだけでなく、すべてのユーザーを読み取ります。
たとえば、ユーザー A はリージョン A にログインして SESSIONID を生成します。ユーザー B はリージョン B にログインして SESSIONID を生成します。
同時に、すべてのユーザーはセッション データベース、またはセッション管理システムを必要とします。これまでの取り組みの結果が表示されます
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() によるセッション ファイルの場所。次に、各ファイルが順番に読み取られて逆シリアル化されます。
各ユーザーのセッション ID はファイルに対応します。このファイルは sess_ で始まり、ロックが設定されている場所に保存されます。このようなことは機能しませんよね? session_save_path()
锁设定的位置。
这类不行吧
将session.save_handler改成db,然后去读那个db。不过files也可以,那你就去读session.save_path
session.save_handler を db に変更してから、その db を読み取ります。ただし、ファイルも利用できるので、session.save_path
の下にあるファイルを読み取るだけです。
echo session_id()
すべてのセッション ID は、セッション ストレージ ディレクトリを介してのみ読み取ることができます。または、すべてのセッションをデータベースに保存できます。
関連トピックの推奨事項: phpセッション (写真、テキスト、ビデオ、ケースを含む)