【问题标题】:Small issue with custom code to detect if a user is a member of a specific usergroup用于检测用户是否是特定用户组成员的自定义代码的小问题
【发布时间】:2017-06-05 04:07:04
【问题描述】:

我有以下代码,它检测用户是否是某个 Joomla 用户组的成员,并向用户显示相关链接。

这适用于 1 个用户组,但是当用户是 1 个以上用户组的成员时,按钮会根据用户所属的用户组数量重复。

因此,例如,如果用户是 4 个用户组的成员,则该按钮将显示 4 次(如果用户是用户组的成员,例如“Usergroup001”,则显示的 4 个按钮中的 1 个将是“开始' 按钮(根据循环)。

无论用户属于多少个用户组,我都希望按钮只显示一次。

<?php
$user_  = JFactory::getUser();
$db     = JFactory::getDBO();
foreach($user_->groups as $group){
$query  = 'SELECT title FROM #__usergroups';
$query .= ' WHERE id = ' . $group;
$db->setQuery( $query );
$grp = $db->loadResult();

if ($grp=='Usergroup001') : ?>
<a href="/start">Start</a>

<?php else : ?>
<a href="/sign-up">Sign up to Usergroup 001</a>

<?php endif; ?>
<?php
}
?>

如果有人可以提供帮助,请提前非常感谢!!!

【问题讨论】:

    标签: php mysql if-statement usergroups


    【解决方案1】:

    试试 in_array

    http://php.net/manual/en/function.in-array.php

    if (in_array($grp,'Usergroup001')) : ?>
    <a href="/start">Start</a>
    
    <?php else : ?>
    <a href="/sign-up">Sign up to Usergroup 001</a>
    

    【讨论】:

    • 嗨,非常感谢您的回复/帮助,尽管不幸的是按钮仍然显示(用户是用户组成员的次数(如果用户是 4 个用户组按钮的成员)显示 4 次).. 如果用户是“Usergroup001”的成员,您的代码也没有提供正确的“开始”按钮。为了澄清修改后的代码,所有按钮都是“注册”,无论用户是否是用户组。很抱歉这个坏消息,非常感谢您的帮助!!!!!!!!!!!!!!!!!!!!!!!! :)
    • @jimmywiddle 立即尝试
    • 嗨,是的,我确实发现了缺少的右括号并添加了它,但我很抱歉地说我担心它不起作用,再次感谢您的时间和帮助!!!跨度>
    【解决方案2】:

    也许这会起作用:

    <?php 
    $user_  = JFactory::getUser();
    $db     = JFactory::getDBO();
    $isMember = false;
    foreach($user_->groups as $group){
        $query  = 'SELECT title FROM #__usergroups';
        $query .= ' WHERE id = ' . $group;
        $db->setQuery( $query );
        $grp = $db->loadResult();
        if ($grp=='Usergroup001') { 
            $isMember = true; 
            break; 
        }
    }
    if ($isMember ) : ?>
        <a href="/start">Start</a>
    <?php else : ?>
        <a href="/sign-up">Sign up to Usergroup 001</a>
    <?php endif; ?>
    

    【讨论】:

    • 已完成,再次感谢!我想知道,因为我需要在一个页面中多次运行此代码,我认为每次运行 db 查询都会占用过多的资源,我试图切断查询,但到目前为止没有运气,再次有任何帮助将不胜感激! :) 再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多