Seite 1 von 1

function getGroupsForUser ---->wie rufe ich die auf

Verfasst: Mo 19. Jul 2004, 18:26
von alpi
Hi,

Ich möchte prüfen, ob ein User der Gruppe moderatoren oder ob ein User da Gruppe Admins eingeloggt is. Wie kann ich das anstellen?
Ich hätte mir schon gedacht, das mit folgender abfrage zu machen, aber irgendwie klappt das nicht.

Code: Alles auswählen

$groupid = $perm->getGroupsForUser ("hier würde die USer ID reinkommen");
echo "ID: $groupid";

if($perm->getGroupsForUser ($user) ==hier würde die groupid reinkommen) 
{
echo "Admin/Moderator eingeloggt";
}

Dieses steht in der Datei class.user.php:

Code: Alles auswählen

$groups = $perm->getGroupsForUser($this->values['user_id']);

######################################
Hier ist noch die Fuktion, wie sie in der perm.inc drin steht:

Code: Alles auswählen

function getGroupsForUser ($user)
    {
	   	  global $cfg;
      	  
      	  $db = new DB_Contenido;
      	  
      	  $sql = "SELECT group_id FROM
      	  		". $cfg["tab"]["groupmembers"] ."
    			WHERE user_id = '".$user."'";
    	  $db->query($sql);
    	  
    	  while ($db->next_record())
    	  {
    	  	$groups[] = $db->f("group_id");
    	  }
    	  
    	  return $groups;
      }

Verfasst: Mo 19. Jul 2004, 18:54
von timo
Beispiel:

Code: Alles auswählen

$result = $perm->getGroupsForUser($auth->auth["uid"]);

echo "<pre>";
print_r($resolt);
echo "</pre>";

Verfasst: Mo 19. Jul 2004, 19:23
von alpi
also im prinzip fluppt es schon.

nur wie heißt jetzt die if-abrage?

ich habe dieses hier ausprobiert:
die Buchstaben- und Zahlenfolgen sind die groupids aus der tabelle groups für die Gruppen Moderatoren und Admins.

Code: Alles auswählen

$result = $perm->getGroupsForUser($auth->auth["uid"]);


if($result == f341969be6d7dea30df9e62377c3ac14 OR $result == d8bcb563687b587129ecc29aa44ccad8) 
{
echo "Admin/Moderator eingeloggt";
}
funzt aber leider nicht.


edit:

hab jetzt noch dieses hoier ausprobiert:

Code: Alles auswählen

$result = $perm->getGroupsForUser($auth->auth["uid"]);
$result2 = print_r($result);
if($result2 == f341969be6d7dea30df9e62377c3ac14 OR $result2 == d8bcb563687b587129ecc29aa44ccad8) 
{
echo "Admin/Moderator eingeloggt";
}
Aber da wird die bedingung auch erfüllt, wenn keiner eigeloggt ist.

Verfasst: Mo 19. Jul 2004, 20:17
von timo
schau mal unter http://www.php.net/array

Verfasst: Mo 19. Jul 2004, 20:29
von alpi
thx, habs jetzt.

Verfasst: Di 20. Jul 2004, 13:04
von HerrB
@alpi: Dann poste doch Deine Lösung mal...

Gruß
HerrB

Verfasst: Di 20. Jul 2004, 14:42
von alpi
Ok, hier ist die Lösung:

Code: Alles auswählen

$result = $perm->getGroupsForUser($auth->auth["uid"]);
foreach ($result as $pe =>$val)
{

   if($val == f341969be6d7dea30df9e62377c3ac14 OR $val == d8bcb563687b587129ecc29aa44ccad8) 
   {
       echo "Admin/Moderator eingeloggt";
   }
   else
   {
        echo "Hallo Gast";
   }

}
Die Code's da sind die groupdID's für die Gruppen Moderator und Admin's.

Verfasst: Di 20. Jul 2004, 15:08
von timo
ein paar hinweise:

- wenn dein Benutzer in mehr als einer Gruppe existiert, wird das echo mehrfach ausgegeben
- du solltest Anführungszeichen um die Werte setzen

Verfasst: Mi 21. Jul 2004, 21:23
von alpi
ähhm....ich glaube ich habe da was vergessen zu testen. da is glaube noch was falsch.

Wenn nämlich keiner eingeloggt is, läuft er die foreach gar nicht durch und es wird garnichts ausgegeben. wie kann ich das verhinder? ich nöchte, dass er das auch ausgibt, wenn eben keiner eingeloggt ist.

Es gibt zwar schon eine Lösung:

Code: Alles auswählen

if ($auth->auth["uid"] == "nobody")
{
   echo "Hallo Gast";
}
$result = $perm->getGroupsForUser($auth->auth["uid"]);
foreach ($result as $pe =>$val)
{

   if($val == f341969be6d7dea30df9e62377c3ac14 OR $val == d8bcb563687b587129ecc29aa44ccad8)
   {
       echo "Admin/Moderator eingeloggt";
   }
   else
   {
        echo "Hallo Gast";
   }

}
Aber diese möchte ich nicht nutzen, weil wenn ich dann am "Hallo Gast" etwas ändern muss, müsste ich das ja bei beiden ändern. Und das wäre zwar kein Probelm, doch ich habe "Hallo Gast" und "Moderator/Admin eingeloggt" nur als Platzhalter benutzt, was ich da eben an Code drin stehen hab.