Seite 1 von 2

Gruppenzugehörigkeiten eines Benutzers prüfen

Verfasst: 27.05.2008 16:40
von lachkopf
Hallo, mein Problem ist folgendes:

In diesem Topic (http://www.phpbb.de/viewtopic.php?t=164060) wird erklärt, wie man prüfen kann, ob ein User in der besagten Gruppe ist oder nicht, wenn ja, dann wird was ausgeführt.
Soweit sogut.
Ich hab das jetzt umgesetzt und will prüfen, ob der User in der Gruppe Administratoren ist (ID = 5).

Der Code:
<?php

define('IN_PHPBB', true);
$phpbb_root_path = '';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
$gruppen_id = "5";
$benutzer_id = "$user->data['user_id']";
$is_in_group = "group_memberships($gruppen_id, $benutzer_id , true)";
if($is_in_group == true)
{
echo "TEXT";
}
?>
Leider wird aber immer "TEXT" ausgegeben, auch wenn ich ncihtmal in meinem Forum iengeloggt bin, oder ich der $gruppen_id z.b. Buchstaben zuweise. Woran liegt das?

MfG,
Lachkopf[/quote]

Verfasst: 27.05.2008 17:04
von bantu
Willst du prüfen ob jemand in der Administratoren-Gruppe ist, oder jemand Administratorenrechte hat?

Wo kommen in deinem Code denn die Anführungszeichen her?

Verfasst: 27.05.2008 18:04
von Boecki91

Code: Alles auswählen

$is_in_group = "group_memberships($gruppen_id, $benutzer_id , true)";
if($is_in_group == true)
{
echo "TEXT";
} 
Kein Wunder du weist der Variable $is_in_group einen Wert zu und zwar group_memberships(x, y , true) und prüfst darauf hin ob die Variable $is_in_group da ist und true ergibt, alles ergibt true, seidenn die Variable ist 0, flase oder leer.

Funktionen dürfen nicht in Anführungszeichen stehen, sonst werden sie nicht erkannt.

Verfasst: 27.05.2008 20:16
von Pionier
Les dir das mal durch: http://www.phpbb.de/viewtopic.php?t=151304

Hat mir sehr geholfen.

Verfasst: 27.05.2008 20:47
von lachkopf
Thx für die Antworten.
Habs jetzt mal ohne die Anführungszeichen gemacht, kommt folgender Fehler:

Fatal error: Call to a member function sql_in_set() on a non-object in xxxxxxxxxxxxxxxincludes/functions_user.php on line 3200


Betrifft diese Zeile:
if ($group_id_ary)
{
$sql .= ' ' . $db->sql_in_set('ug.group_id', $group_id_ary); //Zeile 3200
}
Ich geh mal davon aus, dass diese Datei aber richtig geschrieben ist, und die Anführungszeichen hab ich ja von dem Vorgestellten von Dr. Death benutzt, daher müssten sie eigentlich richtig sein.

Verfasst: 28.05.2008 15:41
von lachkopf
Hab jetzt mal das true in anführungszeichen gesetzt, nun kommt nie TEXT.

Und jetzt nochmal so, wie es in dem originalcode steht.
Was mich eigetnlich wundert ist ja, dass der code von mir ja eigentlihc nur übernommen wurde o.0 http://www.phpbb.de/viewtopic.php?t=164060
kommt dann folgender fehler:
Parse error: syntax error, unexpected T_IF in /usr/export/www/hosting/lachkopf/phpBB3/warteliste_warteliste.php on line 11
<?php
define('IN_PHPBB', true);
$phpbb_root_path = '';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.'.$phpEx);
$gruppen_id = 5;
$benutzer_id = $user->data['user_id'];
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true)
if($is_in_group == true) //Zeile 11
{
echo "TEXT";
}
?>

Verfasst: 28.05.2008 16:30
von Pionier
Ich mache es mal übersichtlicher!!

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
$phpbb_root_path = ''; 
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.'.$phpEx);


// Start session management
$user->session_begin();
$auth->acl($user->data);


// 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($gruppen_id, $benutzer_id , true);



if($is_in_group == true) //Zeile 11
{ 
	echo "TEXT";
}
?> 

Ich dachte, du hättest den Beitrag den ich oben verlinkt hatte durch gearbeitet :(

Hier mal die Auflistung deiner Fehler:
  1. Die Funktion muss hinter den Session Start Teil. Weil deine Seite sonst nicht weiß wer sie geöffnet hat!
  2. Hinter $is_in_group = group_memberships($gruppen_id, $benutzer_id , true) gehört ein ;
  3. Hättest du den von mir genannten Beitrag gelesen, wärst du selbst auf die Lösung gekommen!!!

Verfasst: 28.05.2008 17:44
von lachkopf
Klappt jetz.
Aber dann is der Code in dem Beispiel falsch, da fehlt das ; nämlich jedesmal o.0

Verfasst: 28.05.2008 18:17
von Pionier
lachkopf hat geschrieben:Klappt jetz.
Dann ist ja alles OK :grin:

Verfasst: 28.05.2008 18:26
von bantu
Aber dann is der Code in dem Beispiel falsch, da fehlt das ; nämlich jedesmal o.0
In der Tat. Sollte behoben sein. Danke. :-)