php 如何擷取所有的 sessionid ?或擷取所有的session

來源:互聯網
上載者:User
就是想通過一個.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儲存在資料庫。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.