Drupal で、あるユーザーのすべてのセッションを強制的に閉じる方法

この方法は 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
Posted on 2007-03-07 by yas |