Gruppennamen ausgeben lassen

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
konne
Mitglied
Beiträge: 250
Registriert: 26.08.2004 15:30
Kontaktdaten:

Gruppennamen ausgeben lassen

Beitrag von konne »

Gibt es möglicherweise eine fertige Funktion, um Gruppennamen anhand einer Gruppen-ID auszugeben?

Ich habe in einigen meiner eigenen Seiten einen Zugriffsschutz eingebaut, damit nur bestimmte Gruppen Zugriff haben.

Code: Alles auswählen

$allowed_u[] = 'g7'; // Zugriff nur für Gruppe 7
if (!isset($allowed_u))
  $allowed_u = array();
$sql = "SELECT g.group_id, g.group_name
       FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
       WHERE ug.user_id = '" . $userdata['user_id'] . "'
       AND g.group_id = ug.group_id";
if (!($result = $db->sql_query($sql))) {
  echo 'Datenbankabfrage fehlgeschlagen';
}
$access_allowed = FALSE;
while (list($group_id, $group_name) = $db->sql_fetchrow($result)) {
  if (in_array('g'.$group_id[group_id],$allowed_u )) {
    $access_allowed = TRUE;
    break;
  }
}
if($access_allowed == FALSE)
  echo 'kein Zugriff';
else
  echo 'Seiteninhalt';
Kann man also beispielsweise als Fehlermeldung die zugriffsberechtigten Gruppen auflisten?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Sprechen wir von Scripten des phpBB? Falls ja: Von welchen? Was soll das Kriterium sein, dass die Gruppen ausgesperrt oder reingelassen werden?

Die SQL Query wäre vllt so besser (ungetestet):

Code: Alles auswählen

// Zugriff nur für die Gruppen: hier, kommen, alle, gruppen und rein
$allowed_u = 'hier, kommen, alle, Gruppen, rein';

$sql = "SELECT g.group_id, g.group_name
	FROM " . USER_GROUP_TABLE . " ug INNER JOIN " . GROUPS_TABLE . " g
	WHERE ug.user_id = '".$userdata['user_id']."'
	AND g.group_id = ug.group_id
	AND g.group_name IN ('".$allowed_u."')";
Falls ein Wert zurückkommt, ist der User in einer Gruppe, die brechtigt ist.
Du brauchst den Wert als solches nicht zu prüfen.

Schau auch hier --> Klick
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
konne
Mitglied
Beiträge: 250
Registriert: 26.08.2004 15:30
Kontaktdaten:

Beitrag von konne »

Das Script beruht auf der Vorlage für in phpBB eingebundene Seiten und dem MOD Abfrage der Gruppenzugehörigkeit. D.h. ich habe Seiten, die Benutzer nur betreten bzw. gänzlich sehen dürfen, wenn sie bestimmter Gruppen angehören. Gehören sie nicht dazu, sollen sie eine Information wie z.B. "Diese Seite darf nur von Nutzern der Gruppe ... betreten werden".

Das ganze funktioniert auch alles schon ganz gut, nur dass ich liebend gerne den Nutzern zusätzlich mitteilen möchte, welcher Grupper die Seite angedacht ist.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Code: Alles auswählen

$allowed_u[] = 'g7';
Bedeutet das, dass die Gruppe mit der ID 7 Zugriff hat und Du willst jetzt den Namen der Gruppe mit der ID 7 raus bekommen?

Code: Alles auswählen

for ($i=0; $i<count($allowed_u); $i++)
{
	if (!$i)
	{
		$gruppen = $allowed_u[$i];
	}
	else
	{
		$gruppen .= ", " . $allowed_u[$i];
	}
}
$sql = "SELECT group_name FROM '".GROUPS_TABLE."' WHERE group_id IN ("'.$gruppen.'")";
Die Query gibt dann die Gruppennamen zurück.
Oder habe ich das immer noch falsch verstenden?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
konne
Mitglied
Beiträge: 250
Registriert: 26.08.2004 15:30
Kontaktdaten:

Beitrag von konne »

Miriam hat geschrieben:Bedeutet das, dass die Gruppe mit der ID 7 Zugriff hat und Du willst jetzt den Namen der Gruppe mit der ID 7 raus bekommen?
Im Prinzip ist das schon richtig verstanden worden. Alle User die in der Gruppe 7 sind sollen in dem Fall zugriffsberechtigt sein. Die Funktion "Abfrage der Gruppenzugehörigkeit" schaut allerdings scheinbar nicht nur nach Usergruppen. Es ist auch möglich nur einzelnen Usern per ID (ohne führendes "g") den Zutritt zu gewähren. Das macht es natürlich wieder etwas komplexer, sodass ich mein Problem wohl etwas zurückstellen werde.
Sollte allerdings jemand eine passende Lösung parat haben, wäre ich dankbar. Am besten so, dass am Ende ein String ($access) heraus, der alle Berechtigten per Komma getrennt auflistet (Gruppe x, y, z + zusätzlich User a, b, c).
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“