2016-12-27 6 views
2

私はデータベースレベルのセッションストアメソッドを使用しています。Codeigniter 3すべてのオンラインユーザーを表示

$config['sess_driver'] = 'database'; 
$config['sess_save_path'] = 'ci_sessions';//its your table name name 

したがって、ユーザーログインデータがci_sessionsに正常に挿入されたとき。

__ci_last_regenerate|i:1435420891;identity|s:13:"[email protected] ";username|s:13:"johndoe";email|s:13:"[email protected] ";user_id|s:1:"5";old_last_login|s:10:"1435412865"; 

このように、このテーブルには複数のレコードが含まれている場合があります。私はすべてのオンラインユーザーを表示したい。このデータ列にはBLOB型があります。すべてのユーザー名を取得するにはどうすればよいですか?

+0

私は 'websocket'を使用してそれを行うだろう。 – ShutUpMagda

答えて

2

次のコードを使用して情報を取得します。

$session_data = '__ci_last_regenerate|i:1435420891;identity|s:13:"[email protected] ";username|s:13:"johndoe";email|s:13:"[email protected] ";user_id|s:1:"5";old_last_login|s:10:"1435412865"'; //session data 

$return_data = array(); // array where you put your "BLOB" resolved data 
$offset   = 0; 
while ($offset < strlen($session_data)) { 
    if (!strstr(substr($session_data, $offset), "|")) { 
     throw new Exception("invalid data, remaining: " . substr($session_data, $offset)); 
    } 
    $pos  = strpos($session_data, "|", $offset); 
    $num  = $pos - $offset; 
    $varname = substr($session_data, $offset, $num); 
    $offset  += $num + 1; 
    $data  = unserialize(substr($session_data, $offset)); 
    $return_data[$varname] = $data; 
    $offset  += strlen(serialize($data)); 
} 

echo $return_data['username']; 
echo $return_data['email']; 

おかげ

関連する問題