0

对此的简短描述是我创建了自己的论坛。一切都很棒,我自己也对它印象深刻,因为我只学习了 6 个月的 PHP。但是,我正在尝试使用户组正常运行。现在,我可以将一个用户组分配给一个论坛类别,这一切都非常棒。但同样,我只能将一个组添加到论坛。如果我尝试添加更多组,这就是我的代码遇到问题的地方。

首先,让我给你我正在使用的工作代码:

function checkgroupstat($group, $user) {
$findme = $group . ":";
$filestring = get_user_data($user, "groups");
$pos = strpos($filestring, $findme);
if ($pos === false) {
return "false";
} else {
return "true";
}
}

如您所知,“get_user_data() 函数将返回用户所属的一组组。例如,它将返回 5:1;6:1;7:1 等......重要的部分是冒号前面的数字和冒号本身,例如:5:,但不是 5:1。一个代表用户拥有的权限,并且是另一个编码页面的一部分,所以它在这里并不重要。

“groups”字符串将返回分配给论坛的组。上面的代码完美运行。如果返回 true,则论坛可见,否则返回 false。

但是,我尝试使它可以将多个组分配给论坛,并且我使用了无法按预期工作的代码:

function checkgroupstat($group, $user) {
$groups = explode(',', $group);
$filestring = get_user_data($user, "groups");

for ($i = 0; $i < count($groups); ++$i) {
$findme = $groups[$i] . ":";
$pos = strpos($filestring, $findme);
if ($pos === false) {
$false = "true";
}
else {
$truth = "true";
}
}
if ($truth == "true") {
return "true";
}
if ($truth == "") {

return "false";
}
}

我什至尝试使用 for each loop with break;

有什么建议么?


编辑:

下面的建议没有奏效。请参阅我的最新回复:传递给 checkgroupstat 的参数是:("1,2,3", 6)。get_user_data() 返回的结果是 5:1;6:1;7:1;8:1;。顺便说一句,这些都不适合我。

4

2 回答 2

1

您是否正在尝试以下操作?;)

function checkgroupstat($group, $user) {
    $groups = explode(',', $group);
    $filestring = get_user_data($user, "groups");

    // iterate over the group array 
    // return true if a group has matched
    for ($i = 0; $i < count($groups); $i++) {
        $findme = $groups[$i] . ":";
        $pos = strpos($filestring, $findme);
        if ($pos !== false) {
            return "true";
        }
    }

    // if no group has matched in the loop above
    // we'll have to return false
    return "false";
}
于 2012-12-22T22:46:55.663 回答
0

嗯....请给我 checkgroupstat() 传递的参数,以及 get_user_data() 返回字符串。我会写正确的代码。

从现在开始我只写这个:

function checkgroupstat($group, $user) {
$aUserGroups = get_user_data($user, "groups");
$aGroups = explode(',',$aUserGroups);
foreach($aGroups as $sGroup) {
    list($iGroup,$iSomething) = explode(':',$sGroup);
    if($group==$iGroup) {
        return true;
    }
}
return false;

}

请 - 如果它工作正常给我反馈:)

于 2012-12-22T22:51:06.280 回答