Seite 5 von 8

Verfasst: 24.01.2008 21:38
von Aktiv-X
Hallo,

besten Dank für Skript zusatz. Hat super geklappt. Und ist eine echt einfache Lösung. Danke dir!

Verfasst: 24.01.2008 21:54
von Berliner Schildkroete
oder in der PHP-Datei

Code: Alles auswählen

if (!$S_IN_GROUP)
{
     trigger_error('NOT_AUTHORISED');
}
:wink:

Verfasst: 31.01.2008 20:39
von nickvergessen
Ich hab gerade in phpbb3 selbst eine Funktion gefunden:
includes/functions_user.php

Code: Alles auswählen

function group_memberships($group_id_ary = false, $user_id_ary = false, $return_bool = false)
Damit lässt sich schnell herrausfinden, ob ein Benutzer in einer oder mehreren Gruppen ist.

Verfasst: 31.01.2008 21:28
von Helmut
Hallo nickvergessen,

hast du auch etwas dazu gefunden wie diese Funktion genau verwendet wird?

Gruß Helmut

Verfasst: 01.02.2008 08:47
von Dr.Death
Hmpf,

die Funktion kannte ich noch nicht.... da hätte ich mir das ja sparen können ;-)

Ok, nun eine Anleitung dazu:

Damit die Funktion group_memberships() in Euren eigenen PHP Scripten funktioniert, muss die Datei includes/functions_user.php vorher geladen worden sein.

Beispiel:

Code: Alles auswählen

include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
Wir gehen nun davon aus, das die Funktion group_memberships() existent ist.

Szenario 1:
Überprüfung ob ein User in einer bestimmten Gruppe Mitglied ist:

Code: Alles auswählen

// zu überprüfende Gruppen ID ( Beispiel Gruppen ID 5 )
$gruppen_id = 5;

// zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
$benutzer_id = $user->data['user_id'];

// Nun erfolgt die eigentliche Prüfung:
$is_in_group = group_memberships($group_id, $benutzer_id , true)
Die Variable $is_in_group wird nun mit true gefüllt sein, wenn der betroffene User in der zu überprüfenden Gruppe Mitglied ist.


Szenario 2:
Überprüfung ob ein User in mehreren bestimmten Gruppen Mitglied ist:

Code: Alles auswählen

// zu überprüfende Gruppen IDs ( Beispiel Gruppen ID 5, 10, 12, 15 )
// Hinweis: Bei mehreren Gruppen muss es ein array() sein!
$gruppen_id = array(5,10,12,15);

// zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
$benutzer_id = $user->data['user_id'];

// Nun erfolgt die eigentliche Prüfung:
$is_in_group = group_memberships($group_id, $benutzer_id , true)
Die Variable $is_in_group wird nun mit true gefüllt sein, wenn der betroffene User in einer der zu überprüfenden Gruppe Mitglied ist.

Verfasst: 01.02.2008 10:00
von Helmut
Hallo Dr.Death,

danke dir für die schnelle Antwort und für das Beispiel, das geht ja wirkich einfach damit.

Vielleicht könntest du das Thema in das Forum "phpBB 3.0: Snippets" verschieben, ich denke, da werden noch häufiger Fragen dazu kommen.

Gruß Helmut :wink:

Verfasst: 02.02.2008 21:07
von Dr.Death
Verschoben hab ich es nicht...... aber ich hab eine Zusammenfassung dort erstellt:

Gruppenzugehörigkeiten eines Benutzers prüfen

Vielen Dank auch an alle Mitwirkende (Beta Tester)....

Verfasst: 03.02.2008 01:10
von Dave
Interessant das ihr die funktion noch nicht gefunden habt :D.

Hätte mal früher hier rein schauen sollen xD

Nur als kleine info. Die funktion sollte man nicht zu oft verwenden da sie wohl sehr server lastig ist. Solltest du vieleicht in deinen Beitrag schreiben Dr.Death.

MfG
Dave

Verfasst: 03.02.2008 10:40
von Helmut
Hallo Dave,

danke dir für die Info, aber wie meinst du das genau mit "sehr Server lastig"?

Ich möchte diese Funktion gerne für einige Themenseiten zur Zugangskontrolle meiner neuen Homepage verwenden und auch für die Navigation, um dem User nur die Menu punkte zu zeigen, die er auch anwählen darf. Die Navigation ist ja immer da und wird bei jedem Klick darauf ausgeführt. Ich muss noch dazu sagen, dass bei mir die Navigation dynamisch mithilfe einer Datenbanktabelle erzeugt wird, sind mehrere hundert Einträge in der Tabelle.

Gruß Helmut

Verfasst: 03.02.2008 11:49
von Dave
Siehe der funktiontext:
* Note: Never use this more than once... first group your users/groups
Aber da du die Gruppen oder User als array() angeben kannst sollte es ja möglich sein alles auf einmal zu bekommen.

Als auth() system würde ich das eher nicht nutzen. Dafür würde ich lieber das auth() System vom phpBB nutzen. Dafür müßtest du auf jeden fall die seiten ins phpBB einbinden.