我创建了一个php页面,但内容可能只适用于特定的Joomla组。
该文件位于文件夹中,此文件夹位于具有joomla!
的站点的根目录中如何获取我的php页面,检查用户数据:UserGroupID
/ root
/ root / administrator
/ root / components
...
/ root / folder
/ root / folder / file.php
和file.php
$content_to_group_id = 7;
if ($group_id_user == $content_to_group_id) {
// show
} else {
// error
}
答案 0 :(得分:1)
试试这个,
使用以下代码将joomla框架工作加载到您的页面。
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );//this is when we are in the root
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$user = JFactory :: getUser();//if you want to get current users details then empty params other wise pass like JFactory::getUser($user_id);
echo "<pre/>";
print_r($user)//This resulted array have the user group of the user.
希望它能帮到你..
答案 1 :(得分:0)
最简单的方法可能是利用Joomla框架获取用户的id,在数据库中查询#__user_usergroup_map表中的匹配记录。下面的代码尚未经过测试,需要您将Joomla框架加载到脚本中。
$user =& JFactory::getUser();
$userID = $user->get('id');
// allowed group_id
$groupID = 7;
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('user_id');
$query->from('#__user_usergroup_map');
$where->where('user_id = ' . $userID . 'and group_id = ' . $groupID);
$db->setQuery($query);
$db->Query();
$num_rows=$db->getNumRows();
if ($num_rows === 1) {
// only one matching record
}
else {
// Sorry, you aren't allowed here.
}
答案 2 :(得分:0)
注意你正在使用Joomla! 3+,因此上面的一些代码导致由于弃用方法和PHP版本而导致的错误。下面你会找到一些可能对你有帮助的行,特别是$ groups变量,它返回一组授权用户组。然后,您只需要针对数组$ groups检查您的用户ID。
$user = JFactory::getUser();
$db = JFactory:: getDbo();
$groups = $user->getAuthorisedGroups();
$input = JFactory::getApplication()->input;
希望它有所帮助。