是否有API函数来检查特定用户是否已登录?

时间:2011-10-31 03:15:32

标签: drupal drupal-6 drupal-modules

是否有Drupal API函数接受用户ID并返回该用户当前是否已登录?

即。是否有像user_is_logged_in($some_uid)这样的函数?

3 个答案:

答案 0 :(得分:2)

这是我从高级论坛模块借用/修改的功能,用于检查特定用户是否在线。它在特定时间间隔内检查会话表中的用户。将其添加到自定义模块并根据需要调用:

function MODULENAME_check_user_online($uid) {

  $interval = REQUEST_TIME - variable_get('user_block_seconds_online', 900);

  $query = db_select("users", "u")->distinct()->fields("u", array("uid", "name"));
  $s_alias = $query->join("sessions", "s", "u.uid = s.uid");

  $query->addExpression("MAX({$s_alias}.timestamp)", "maxtime");
  $query
      ->condition("{$s_alias}.timestamp", $interval, ">=")
      ->condition("{$s_alias}.uid", $uid, "=")
      ->groupBy("u.uid, u.name")
      ->orderBy("maxtime", "DESC");

  $check_user_logged_in = $query->execute();
  if ($account = $check_user_logged_in->fetchObject()) {
    return TRUE;
  }
  return FALSE;

}

答案 1 :(得分:1)

不,没有,如果你想要一个,你必须自己写。看一下数据库中的会话表。

答案 2 :(得分:-1)