Joomla 2.5 - 显示活动登录用户

时间:2015-08-18 01:03:29

标签: php mysql joomla joomla2.5

我已将多个用户分组并创建了一个只能由这些组访问的页面。

虽然我了解有一些解决方案可以建议$ user-> guest来确定用户状态,但它只会打印出除Guest之外的其他角色的所有用户。

因此我研究并发现我们可以用会话表来反击检查。

以下是我的代码:

<?php
$registeredUsers = JAccess::getUsersByGroup(11);

jimport('joomla.access.access');
jimport('joomla.user.user');

$db = JFactory::getDBO();
$query = 'SELECT COUNT(userid) FROM #__session AS s WHERE s.userid = ' (int)$userid;
$db->setQuery($query);
$loggedin = $db->loadResult();

foreach($registeredUsers as $user_id) {
$user = JFactory::getUser($user_id);

if($loggedin) {
     echo $user->name."; ";
  }
}
?>

不幸的是,它也会返回所有用户。

任何人都在乎看看这个吗?

2 个答案:

答案 0 :(得分:2)

@emmanuel感谢你的开端。在玩了几个小时的代码后,我设法找到了完整的解决方案。     

$registeredUsers = JAccess::getUsersByGroup(11);
$registeredUsersex = implode(" ",$registeredUsers);

if(!empty($registeredUsers)){

$db = JFactory::getDBO();
$query = 'SELECT username FROM #__session AS s WHERE s.userid IN ( ' . implode(',', $registeredUsers) . ' )';
$db->setQuery($query);
$db->setQuery($query);
$loggedin_users = $db->loadRowList();

print_r(array_values($loggedin_users));
}
?>

答案 1 :(得分:1)

getUsersByGroup方法返回组中包含的用户ID数组。 Please refer here (for j2.5 version)

因此,如果使用MySQL IN和php explode函数在此数组中存在userid,则必须检查您的查询。

我还没有测试过,但结果必须是这样的:

<?php
$registeredUsers = JAccess::getUsersByGroup(11);

jimport('joomla.access.access');
jimport('joomla.user.user');

if(!empty($registeredUsers)){

   $db = JFactory::getDBO();
   $query = 'SELECT userid FROM #__session AS s WHERE s.userid IN ( ' . explode(',', $registeredUsers) . ' )';
   $db->setQuery($query);
   $loggedin_users = $db->loadObjectList();

   foreach($loggedin_users as $user_id){
      $user = JFactory::getUser($user_id->userid);
      echo $user->name."; ";
   }

}
?>