这个简短的描述是我已经创建了我自己的论坛。一切都很棒,我自己也对它印象深刻,因为我只学习了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每个循环与break;
有什么建议吗?
编辑:
下面的建议不起作用。请看我的最新回复:传递给checkgroupstat的参数是:("1,2,3",6)。get_user_data()返回的结果是5:1;6:1;7:1;8: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";
}
唔唔....请给我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;
}
请给我反馈,如果它工作良好:)