Seite 7 von 8

Verfasst: 25.05.2008 16:43
von 4seven
Ich habe dieses Script jetzt bis zum blöde werden versucht zum laufen zu bringen.

http://www.phpbb.de/viewtopic.php?t=164060

Hier zb. in der functions_posting.php (hab es aber auch in allen möglichen anderen Dateien versucht)

Er schmeißt mir als echo immer: "Du bist kein Mitglied in Gruppe 7" raus, obwohl ich mit einem Mitglied der Gruppe 7 die Seite aufrufe.

Hinweis: Ich möchte kein Template-Switch, sondern ein Funktions-Switch erstellen (das müsste aber in jedem Falle analog funktionieren, da ja die Anweisung klar ist)

Hat da wer eine Lösung parat?
<?php
/**
*
* @package phpBB3
* @version $Id: functions_posting.php 8479 2008-03-29 00:22:48Z naderman $
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}

include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);

$gruppen_id = 7;
$benutzer_id = $user->data['user_id'];
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true);

if ($is_in_group == true)
{
echo 'Du bist Mitglied in Gruppe 7';
}
else
{
echo 'Du bist kein Mitglied in Gruppe 7';
}
.

Verfasst: 25.05.2008 18:14
von Helmut
Hallo 4seven,

ich verwende dieses Skript von Dr.Death in die functions.php eingebaut, es funktioniert auch mit 3.0.1 fehlerfrei. Ich habe die Abfrage dann in meiner *.php Datei so gemacht:

Code: Alles auswählen

// Die zu prüfenden Gruppen IDs müssen mit Komma getrennt eingetragen werden
$check_group = "5";

$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
    // In der html Datei kann mit <!-- IF S_IN_GROUP -->  und <!-- ENDIF --> ein Bereich markiert werden.
   $template->assign_var('S_IN_GROUP', true);
}
else
{
	trigger_error($user->lang['NOT_AUTORIZED_SVI'] . '<br /><br />' . sprintf($user->lang['BACK_TO_SVI'], '<a href="' . append_sid("{$phpbb_root_path}" . 'svisuite/index.' . $phpEx) . '">', '</a>',  '<a href="' . append_sid("{$phpbb_root_path}" . 'ucp.' . $phpEx . '?mode=login') . '">', '</a>'));
}
//------------------------------------------------------
Gruß Helmut :wink:

Verfasst: 25.05.2008 18:57
von Dr.Death
Dein Script kann nicht funktionieren, da Du am Anfang des Scripts keinerlei Sessiondaten initialisiert hast.

Halte Dich an die minimalen Voraussetzungen für eigene phpBB3 Scripte und die Gruppenabfrage wird funktionieren.

Verfasst: 25.05.2008 19:16
von 4seven
Jetzt klingelts.

Alles klar :D

..Danke an euch und Grüße :grin:

Verfasst: 25.05.2008 19:51
von 4seven
Hallo nochmal,

habe es jetzt so in der functions_posting.php

Er schmeißt mir immer noch als echo: "Du bist kein Mitglied in Gruppe 7" raus,
obwohl ich mit einem Mitglied der Gruppe 7 die Seite aufrufe.
<?php
/**
*
* @package phpBB3
* @version $Id: functions_posting.php 8479 2008-03-29 00:22:48Z naderman $
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}

include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);

$user->session_begin();
$user->setup();
$auth->acl($user->data);

$gruppen_id = 7;
$benutzer_id = $user->data['user_id'];
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true);

if ($is_in_group == true)
{
echo 'Du bist Mitglied in Gruppe 7';
}
else
{
echo 'Du bist kein Mitglied in Gruppe 7';
}
Edit: Um das abzukürzen und damit ich nicht länger fragen muss:
Kann mir jemand ein "lebendes Beispiel", also eine komplette Datei verlinken, bei der es funktioniert. Nochmal: Ich möchte keinen Template-Switch, sondern einen Funktions-Switch erstellen. echo dient als Test, weil wenn echo funktioniert wird auch der Switch funktionieren.

Verfasst: 25.05.2008 21:12
von djchrisnet
ich persönlich finde folgenden code für die Include zeile passender:

Code: Alles auswählen

if (!function_exists('group_memberships'))
						{
							include($phpbb_root_path . "includes/functions_user.$phpEx");
						}

Verfasst: 25.05.2008 22:39
von Dr.Death
Ich habe diese Gruppenabfrage in meinem Formel 1 Webtipp eingebaut.
Schau Dir mal die im Root liegende " formel.php " etwas näher an.

Verfasst: 25.05.2008 23:12
von 4seven
Genial, Ihr seid die Besten (Wieder was gelernt)

Jetzt gehts

War ein Flüchtlings + Denkfehler :wink:

Verfasst: 26.05.2008 17:16
von Pionier
Ich möchte aus

Code: Alles auswählen

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

Code: Alles auswählen

// zu überprüfende Gruppen Name ( Beispiel Gruppen Name = Moduser )
$gruppen_name = 'moduser';
machen. Mit dem hier gezeigten Code geht es nicht :(

Was muss ich ändern???

Verfasst: 26.05.2008 17:56
von djchrisnet
geht nicht, da der gruppenname nicht in der tabelle gespeichert wird. was hast du gegen die ID?