0

これについての簡単な説明は、私が自分のフォーラムを作成したということです。すべてが素晴らしく機能し、PHPを6か月しか勉強していないという点で、私自身も非常に感銘を受けています。ただし、ユーザーグループを正しく機能させようとしています。現在、1つのユーザーグループをフォーラムカテゴリに割り当てることができ、すべてがうまく機能しています。しかし、繰り返しになりますが、フォーラムに追加できるグループは1つだけでした。さらにグループを追加しようとすると、ここでコードに問題が発生します。

まず、私が使用している作業コードを紹介します。

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ではありません。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";
}
}

ブレーク付きの各ループに使用してみました。

助言がありますか?


編集:

以下の提案は機能しませんでした。次のような私の最新の応答を参照してください。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 に答える