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

Gesperrt
alpi
Beiträge: 117
Registriert: Fr 9. Jul 2004, 15:56
Kontaktdaten:

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

Beitrag 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;
      }
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

Beispiel:

Code: Alles auswählen

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

echo "<pre>";
print_r($resolt);
echo "</pre>";
alpi
Beiträge: 117
Registriert: Fr 9. Jul 2004, 15:56
Kontaktdaten:

Beitrag 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.
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

schau mal unter http://www.php.net/array
alpi
Beiträge: 117
Registriert: Fr 9. Jul 2004, 15:56
Kontaktdaten:

Beitrag von alpi »

thx, habs jetzt.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

@alpi: Dann poste doch Deine Lösung mal...

Gruß
HerrB
alpi
Beiträge: 117
Registriert: Fr 9. Jul 2004, 15:56
Kontaktdaten:

Beitrag 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.
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag 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
alpi
Beiträge: 117
Registriert: Fr 9. Jul 2004, 15:56
Kontaktdaten:

Beitrag 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.
Gesperrt