Auslesen der Gruppenzugehörigkeiten eines benutzers
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Auslesen der Gruppenzugehörigkeiten eines benutzers
Hi,
bei der Einbindung meines Forums in die Website bin ich auf folgende problemstellung gestoßen:
Ich möchte auf meiner Website einige Seiten machen, die nur für bestimmte Gruppen zugänglich sind. Also z.B. freunde.php nur für Mittglieder der Gruppe "Freunde", kollegen.php nur für Mitglieder der Gruppe "Kollegen" etc.
Ich habe das Forum in die Homepage wie hier beschrieben eingebunden.
Ich hoffe, dass es nicht nötig ist, die Gruppenzugehörigkeit direkt aus der Datenbank auszulesen, da steig ich nicht ganz durch (also wie die Gruppen und die Gruppenzugehörigkeiten in den Datenbanken gespeichert werden, das Tabellenlayout blick ich net...)
Falls doch, könnte mir das ja vielleicht jemand erklären, wäre nett.
Ich dachte mir aber eigentlich, dass die $user-Klasse doch diese Informationen schon enthalten sollte.
Also irgendeine Möglichkeit, ein Array aller Gruppen zu bekommen, in denen ein User mitglied ist, wie gesagt, am besten ohne nocheinmal extra auf die Datenbank zugreifen zu müssen.
Über eine Antwort würde ich mich freuen
FBI
bei der Einbindung meines Forums in die Website bin ich auf folgende problemstellung gestoßen:
Ich möchte auf meiner Website einige Seiten machen, die nur für bestimmte Gruppen zugänglich sind. Also z.B. freunde.php nur für Mittglieder der Gruppe "Freunde", kollegen.php nur für Mitglieder der Gruppe "Kollegen" etc.
Ich habe das Forum in die Homepage wie hier beschrieben eingebunden.
Ich hoffe, dass es nicht nötig ist, die Gruppenzugehörigkeit direkt aus der Datenbank auszulesen, da steig ich nicht ganz durch (also wie die Gruppen und die Gruppenzugehörigkeiten in den Datenbanken gespeichert werden, das Tabellenlayout blick ich net...)
Falls doch, könnte mir das ja vielleicht jemand erklären, wäre nett.
Ich dachte mir aber eigentlich, dass die $user-Klasse doch diese Informationen schon enthalten sollte.
Also irgendeine Möglichkeit, ein Array aller Gruppen zu bekommen, in denen ein User mitglied ist, wie gesagt, am besten ohne nocheinmal extra auf die Datenbank zugreifen zu müssen.
Über eine Antwort würde ich mich freuen
FBI
Hallo,
nein, diese Info wird nicht im $user Array gespeichert.
Ich habe mir um die Gruppenzugehörigkeit abzufragen eine kleine Funktion gebastelt, die einfach "ja, User ist in der entsprechenden Gruppe" oder "Nein, kein Mitglied" zurückliefert.
Die Zeile:
müsstest Du dir auf Deine verwendete Gruppe anpassen.
Beispiel: "Freunde" sind alle in der Gruppe "Freunde" mit der Gruppen ID 5
nein, diese Info wird nicht im $user Array gespeichert.
Ich habe mir um die Gruppenzugehörigkeit abzufragen eine kleine Funktion gebastelt, die einfach "ja, User ist in der entsprechenden Gruppe" oder "Nein, kein Mitglied" zurückliefert.
Code: Alles auswählen
/**
* get_formel_auth
*
* Get formel auth status
* Returns TRUE if user_id is in $access_group
*/
function get_formel_auth()
{
global $db, $formel_config, $user;
$access_group = $formel_config['restrict_to'];
$sql = 'SELECT g.group_id
FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug
WHERE g.group_id = ug.group_id
AND ug.user_id = ' . $db->sql_escape($user->data['user_id']) . '
AND ug.user_pending <> ' . TRUE . '
AND g.group_id = ' . $db->sql_escape($access_group);
$result = $db->sql_query($sql);
$check_formel_auth = $db->sql_affectedrows($result);
$db->sql_freeresult($result);
if ( $check_formel_auth <> 0 )
{
return TRUE;
}
return FALSE;
}
Code: Alles auswählen
$access_group = $formel_config['restrict_to'];
Beispiel: "Freunde" sind alle in der Gruppe "Freunde" mit der Gruppen ID 5
Code: Alles auswählen
$access_group = 5;
- Berliner Schildkroete
- Mitglied
- Beiträge: 563
- Registriert: 30.03.2007 19:02
- Wohnort: Berlin
@RoyoBerlin
Die GruppenID findest du über die Datenbank heraus.
_______________________________________________________________
1. Wo muss ich den Code einbauen, wenn ich ihn mit einem IF-Code einbauen
möche?
2. Wo muss ich den Code einbauen, wenn ich ihn so einbauen möchte:
Die GruppenID findest du über die Datenbank heraus.
_______________________________________________________________
1. Wo muss ich den Code einbauen, wenn ich ihn mit einem IF-Code einbauen
möche?
Code: Alles auswählen
<!-- IF -->
Code: Alles auswählen
if (!$user->data['is_in irgendeiner Gruppe'])
Grüße
Berliner Schildkröte
kein Support via PN, etc. - Befolgung meiner Vorschläge auf eigene Gefahr!
Berliner Schildkröte
kein Support via PN, etc. - Befolgung meiner Vorschläge auf eigene Gefahr!
hmm da hab ich wohl was falsch gemacht
Code: Alles auswählen
Parse error: syntax error, unexpected ')' in /www/htdocs/w0090034/includes/template.php(518) : eval()'d code on line 148
Code: Alles auswählen
<!-- IF --> if (!$user->data['is_in 18']) <a href="{U_USER_MAP}" title="Mitglieder-Karte">MAP</a> | <!-- ENDIF -->
Glaube nichts auf bloßes Hörensagen hin; glaube nicht an Überlieferungen, weil sie alt sind.
(Buddha, 553-483 v.Chr.)
(Buddha, 553-483 v.Chr.)
Ich glaube Ihr solltet Euch mal in diesem Artikel vertiefen:
http://olympuswiki.naderman.de/Template_Syntax
Die PHP Datei, die Eurer HTML Template steuern soll muss die u.g. Funktion eingebaut haben.
Dann erstellt Ihr Euch in der gleichen PHP eine Abfrage:
In der zur PHP Datei passenden HTML Template Datei kommt nun folgender "Switch":
Sollte der User nicht in der Gruppe gewesen sein, so hat die Variable S_IN_GROUP den Wert "false" und wird somit nicht aktiv.
http://olympuswiki.naderman.de/Template_Syntax
Die PHP Datei, die Eurer HTML Template steuern soll muss die u.g. Funktion eingebaut haben.
Code: Alles auswählen
/**
* get_group_auth
*
* Get group auth status
* Returns TRUE if user_id is in $access_group
*/
function get_group_auth($access_group = 5)
{
global $db, $user;
$sql = 'SELECT g.group_id
FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug
WHERE g.group_id = ug.group_id
AND ug.user_id = ' . $db->sql_escape($user->data['user_id']) . '
AND ug.user_pending <> ' . TRUE . '
AND g.group_id = ' . $db->sql_escape($access_group);
$result = $db->sql_query($sql);
$check_group_auth = $db->sql_affectedrows($result);
$db->sql_freeresult($result);
if ( $check_group_auth <> 0 )
{
return TRUE;
}
return FALSE;
}
Code: Alles auswählen
// Die folgende Zahl ist die ID der Gruppe die Ihr prüfen möchtet
$check_group = 10;
// Ist der User, der diese PHP Datei aufgerufen hat, in der Gruppe mit der o.g. ID ??
$is_in_group = get_group_auth($check_group);
// Wenn der User in dieser Gruppe ist, liefert die Funktion den Wert TRUE zurück.
if ($is_in_group == true)
{
// Teile dem Template System mit, das die Variable "S_IN_GROUP" den Wert TRUE bekommt
$template->assign_var('S_IN_GROUP', true);
}
Code: Alles auswählen
<!-- IF S_IN_GROUP --><a href="{U_USER_MAP}" title="Mitglieder-Karte">MAP</a> | <!-- ENDIF -->
hmm iss ja schlecht das muss man also in jeder php ändern
index, viewtopic usw...
habs erstmal in die index gepackt und die IF anweisung in die overall header..
resultat ist das beim aufrufen auf der seite steht
hmmm
index, viewtopic usw...
habs erstmal in die index gepackt und die IF anweisung in die overall header..
resultat ist das beim aufrufen auf der seite steht
Code: Alles auswählen
// Die folgende Zahl ist die ID der Gruppe die Ihr prüfen möchtet $check_group = 18; // Ist der User, der diese PHP Datei aufgerufen hat, in der Gruppe mit der o.g. ID ?? $is_in_group = get_group_auth($check_group); // Wenn der User in dieser Gruppe ist, liefert die Funktion den Wert TRUE zurück. if ($is_in_group == true) { // Teile dem Template System mit, das die Variable "S_IN_GROUP" den Wert TRUE bekommt $template->assign_var('S_IN_GROUP', true); }
Glaube nichts auf bloßes Hörensagen hin; glaube nicht an Überlieferungen, weil sie alt sind.
(Buddha, 553-483 v.Chr.)
(Buddha, 553-483 v.Chr.)
Ich glaube du hast da etwas verwechselt bzw. etwas komplett falsch eingebaut.
Verlinke doch mal bitte deine veränderte index.php ( oder die Datei wo der Code rein soll ) als TXT Datei.
Zudem noch ein kleiner Hinweis:
Die index.php steuert NICHT die overall_header.html
Dafür ist die includes/functions.php zuständig.
Ich werde hier aber keine Schritt für Schritt Anleitung geben, der Code war auch nur ein Beispiel, den sich jeder selber anpassen muss.
Verlinke doch mal bitte deine veränderte index.php ( oder die Datei wo der Code rein soll ) als TXT Datei.
Zudem noch ein kleiner Hinweis:
Die index.php steuert NICHT die overall_header.html
Dafür ist die includes/functions.php zuständig.
Ich werde hier aber keine Schritt für Schritt Anleitung geben, der Code war auch nur ein Beispiel, den sich jeder selber anpassen muss.
ja fehler gerade gesehen... doing 
mit dem steuern schau ich gleich danke
---------
nagut ich gebs auf.. jenachdem wo ichs hinsetze kommt ne andere fehlermeldung.. mach ichs weiter oben z,b,
und das war der text in der functions

mit dem steuern schau ich gleich danke
---------
nagut ich gebs auf.. jenachdem wo ichs hinsetze kommt ne andere fehlermeldung.. mach ichs weiter oben z,b,
Code: Alles auswählen
Fatal error: Call to a member function on a non-object in /www/htdocs/w0090034/includes/functions.php on line 16
Code: Alles auswählen
/**
* get_group_auth
*
* Get group auth status
* Returns TRUE if user_id is in $access_group
*/
function get_group_auth($access_group = 5)
{
global $db, $user;
$sql = 'SELECT g.group_id
FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug
WHERE g.group_id = ug.group_id
AND ug.user_id = ' . $db->sql_escape($user->data['user_id']) . '
AND ug.user_pending <> ' . TRUE . '
AND g.group_id = ' . $db->sql_escape($access_group);
$result = $db->sql_query($sql);
$check_group_auth = $db->sql_affectedrows($result);
$db->sql_freeresult($result);
if ( $check_group_auth <> 0 )
{
return TRUE;
}
return FALSE;
}
// Die folgende Zahl ist die ID der Gruppe die Ihr prüfen möchtet
$check_group = 18;
// Ist der User, der diese PHP Datei aufgerufen hat, in der Gruppe mit der o.g. ID ??
$is_in_group = get_group_auth($check_group);
// Wenn der User in dieser Gruppe ist, liefert die Funktion den Wert TRUE zurück.
if ($is_in_group == true)
{
// Teile dem Template System mit, das die Variable "S_IN_GROUP" den Wert TRUE bekommt
$template->assign_var('S_IN_GROUP', true);
}
Glaube nichts auf bloßes Hörensagen hin; glaube nicht an Überlieferungen, weil sie alt sind.
(Buddha, 553-483 v.Chr.)
(Buddha, 553-483 v.Chr.)
- Berliner Schildkroete
- Mitglied
- Beiträge: 563
- Registriert: 30.03.2007 19:02
- Wohnort: Berlin
versuch mal das:
es liegt an:
lösche ihn und füge nach:
danach einfügen:
EDIT: DANN IST DER CODE WIRKUNGSLOS
Mach es einfach in die "normalen Datein"
DANKE DOC DER CODE GEHT WUNDERBAR!!!!!
es liegt an:
Code: Alles auswählen
// Teile dem Template System mit, das die Variable "S_IN_GROUP" den Wert TRUE bekommt
$template->assign_var('S_IN_GROUP', true);
Code: Alles auswählen
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
Code: Alles auswählen
'S_IN_GROUP' => true,

Mach es einfach in die "normalen Datein"
DANKE DOC DER CODE GEHT WUNDERBAR!!!!!
Grüße
Berliner Schildkröte
kein Support via PN, etc. - Befolgung meiner Vorschläge auf eigene Gefahr!
Berliner Schildkröte
kein Support via PN, etc. - Befolgung meiner Vorschläge auf eigene Gefahr!