この方法は Drupal においてすべてのセッションを閉じ、強制ログアウトの効果を持つ。hook_cron で自動処理したい場合などに有効だと思う。なぜなら、複数または1つのブラウザで複数のウィンドウを開いたりしているケースがあるからだ。
要はデータベース中のセッションテーブル {sessions} からあるユーザー(uid を指定)のセッションをすべて削除するだけである。
<?php
...
global $user;
$user_ = $user;
$result = db_query('SELECT uid FROM {sessions} WHERE uid=%d', $user->uid);
$uid = db_result($result);
if($uid) {
if(もし条件に合わなかったら) {
db_query('DELETE FROM {sessions} WHERE uid=%d', $user->uid);
watchdog('your_module_name', "Session closed for <i>$user->name</i>" );
}
}
$user = $user_;
...
?>
トラックバック URL:
https://perltips.twinkle.cc/trackback/177