Seite 1 von 1

Frage zu den Benutzergruppen

Verfasst: 01.12.2003 11:19
von NickVerstehn
Hallo,

ich habe folgendes Problem: Ich habe für meine Homepage einen Adminbereich erstellt, indem sich alle User mit Hilfe ihrer Forendaten einloggen können. Das funktioniert auch ganz gut, nur möchte ich jetzt verschiedene Menüpunkte zur Verfügung stellen, die nur von bestimmten Benutzergruppen durchführbar sind. Also eine IF Abfrage, in der abgefragt wird, ob der gerade eingeloggte User in der richtigen Gruppe ist.

Ich habe leider keine Ahnung, welche Daten ich dafür brauche, da ich zwar die Einträge aus der Tabelle USER abfregen kann, aber die Gruppen ja in einer extra Tabelle gespeichert sind. Es wäre nett, wenn mir jemand helfen könnte!

MfG

Nick Verstehn

Verfasst: 01.12.2003 11:22
von PhilippK
Reden wir hier gerade von phpBB, von deiner Homepage oder von einer Mischung von beiden. So ganz klar wird mir das nämlich nicht...

Gruß, Philipp

Verfasst: 01.12.2003 11:35
von Gast
if ($userdata['user_id'] == 5)Hallo,

tut mir leid, ich hab mich etwas unklar ausgedrückt ;). ALso es ist eindeutig eine Mischung aus beiden, aber was ich benötige, ist nur ein Befehl:

Wie kann ich per PHP Befehl aus der phpBB Datenbank feststellen, ob sich der der eingeloggte User in einer bestimmten Gruppe befindet?

Den Usernamen oder die UserID kann ich ja so auslesen:

Code: Alles auswählen

$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 
echo $userdata['username'];
echo $userdata['user_id'];
So kann ich ja leicht feststellen, ob der einzelne User die beötigten Rechte hat, den Link zu klicken, indem ich abfrage:

Code: Alles auswählen

if ($userdata['user_id'] == XXX)
{
erlaubt
}
Ich möchte es mir aber einfacher machen, und nach der Gruppe fragen, denn bei mehrern Usern pro Gruppe ist es natürlich einfacher, nur eine Abfrage zu machen, als zu fragen:

Code: Alles auswählen

if ($userdata['user_id'] == XXX or $userdata['user_id'] == YYY or ...)
Also in etwa so:

Code: Alles auswählen

if ($userdata['gruppennumer_id'] == "benötigte Gruppennummer")
Aber da es halt diese "gruppennumer_id" nicht gibt, wollt ich wissen, wie ich es lösen kann.

Ich hoffe, ich habs diesmal geschafft, mich verständlicher auszudrücken ;)

MfG

Nick Verstehn

Verfasst: 01.12.2003 11:48
von PhilippK
Die Gruppenzuordnungen sind in der phpbb_user_group gespeichert. Da musst du mit 'ner entsprechenden SQL-Abfrage zugreifen und das Ergebnis auswerten.

Gruß, Philipp

Verfasst: 01.12.2003 12:33
von Gast
Hallo und danke,

ich habe es probiert, stehe aber leider immernoch vor einem etwas größerem Problem. Ich habe leider von MySQL fast gar keine Ahnung, und deswegen krieg ich wohl auch keine vernünftige Abfrage hin. Mein Code:

Code: Alles auswählen

$i=0;

$user_gruppenid = mysql("FORENDB" select * from phpbb_user_group where group_id=XX");

mysql_fetch_object($user_gruppenid);

$user_gruppenid = (mysql_result($user_gruppenid,$i,user_id));

if ($userdata['user_id'] == $user_gruppenid)
{
echo " $user_gruppenid ";
}

else
{
echo " nix ";
}
Jetzt kann ich leider nur feststellen, ob der User in der richtigen Gruppe ist, wenn er der erste User der Gruppe ist, da in der "phpbb_user_group " Tabelle leider nicht für jede Gruppe nur eine Zeile mit allen dazugehörigen Usern eingetragen ist, sondern für jeden USern jedesmal wieder eine neue Zeile, also:

Code: Alles auswählen

Group_id  User_ID
25 5
25 9
25 88
Mit meiner Abfrage krieg ich immer nur mit dem eingeloggten User 5 ein positives Abfrageergebnis, obwohl ja auch User 9 und 88 in der GRuppe sind. Diese würden dann aber nicht erkannt. Deswegen wäre ich sehr froh, wenn mir jemand einen besseren oder erweiterten Abfragebefehl geben könnte, der auch alle anderen User erkennt, und nicht nur den ersten!

Mir ist schon klar, das es mit dem $i zusammenhängt, ich habe es aber leider nicht geschafft, eine funktionierende Schleife zu erstellen, die alle User abfragt. Was muss ich tun?

MfG und danke schonmal für alle Mühen

Nick Verstehn

Verfasst: 01.12.2003 16:08
von Gast
Alles gelößt, vielen Dank für die Hilfe.