Gruppenverwaltung von Websites Prob

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
Saber_Rider
Mitglied
Beiträge: 101
Registriert: 21.12.2003 18:27

Gruppenverwaltung von Websites Prob

Beitrag von Saber_Rider »

Habe den Code für den Hack mit der Gruppenverwaltung etwas angepasst, um nur die gruppen ID auszulesen.

Code: Alles auswählen

$allowed_u = array();
$allowed_u[] = 'g2';
$allowed_u[] = 'g10';
$allowed_u[] = 'g20';

$access_allowed = false;

        $sql = "SELECT group_id
                FROM " . phpbb_user_group .
                " WHERE user_id = '" . $userdata['user_id'] . "'";
        if ( !($result = $db->sql_query($sql)) )
        {
                message_die(GENERAL_ERROR, 'Could not get user group.', '', __LINE__, __FILE__, $sql);
        }
        print($result);
        $access_allowed = false;
        while( $group_id = $db->sql_fetchrow($result) )
        {
        	//print(count($group_id));
        	//print($group_id[0]);
        	//print($group_id[1]);
        	//print($group_id[2]);
        	print($userdata['user_id']);
                if( in_array('g' . $group_id,$allowed_u ))
                {
                         $access_allowed = true;
                         break;
                }
        }
        exit();
        if( !$access_allowed )
        {
                message_die(GENERAL_MESSAGE, $lang['Not_Authorised'] );
        }
Diesen Code habe ich dann in die group.php hinter
//
// End session management
//
eingefügt. Nun sollte er mir eigentlich die Gruppen des Users geben und mit den erlaubten Gruppen vergleichen.
Zum Test habe ich ein paar prints eingebaut. Aber leider ist count($group_id) immer 1 und $group_id[0] immer leer. Es werden also nicht die Gruppen ausgegeben. Funktionieren tut die Abfrage schon, denn wenn ich sie in PHPMyAdmin ausführe bekomme ich das richtige Ergebnis.

Kann mir einer verraten was hier falsch läuft und warum ich keine Gruppen zurück bekomme?

Gruß, Saber_Rider
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Re: Gruppenverwaltung von Websites Prob

Beitrag von itst »

count($group_id) ist immer 1, weil in jedem Durchlauf der while-Schleife nur eine Ergebniszeile von MySql abgeholt wird.

Statt $group_id[0] musst Du $group_id['group_id'] benutzen, weil das Feld im Ergebisset group_id und nicht 0, 1 oder 2 heisst. Du schreibst ja SELECT group_id und nicht SELECT 0 ;-)

Code: Alles auswählen

$allowed_u = array();
$allowed_u[] = 'g2';
$allowed_u[] = 'g10';
$allowed_u[] = 'g20';

$access_allowed = false;

        $sql = "SELECT group_id
                FROM " . phpbb_user_group .
                " WHERE user_id = '" . $userdata['user_id'] . "'";
        if ( !($result = $db->sql_query($sql)) )
        {
                message_die(GENERAL_ERROR, 'Could not get user group.', '', __LINE__, __FILE__, $sql);
        }
        print($result);
        $access_allowed = false;
        while( $group_id = $db->sql_fetchrow($result) )
        {
        	//print(count($group_id));
        	//print($group_id['group_id']);
        	//print($group_id['group_id']);
        	//print($group_id['group_id']);
        	print($userdata['user_id']);
                if( in_array('g' . $group_id['group_id'],$allowed_u ))
                {
                         $access_allowed = true;
                         break;
                }
        }
        exit();
        if( !$access_allowed )
        {
                message_die(GENERAL_MESSAGE, $lang['Not_Authorised'] );
        }
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
Benutzeravatar
Saber_Rider
Mitglied
Beiträge: 101
Registriert: 21.12.2003 18:27

Beitrag von Saber_Rider »

Ok, Asche über mein Haupt. Das hätte ich auch selbst merken können. Nur komisch, dass es wohl sonst noch keinem aufgefallen ist. Denn dann ist die name.php im Mod auch falsch.
Den Mod gibts hier.

Dort steht nämlich auch:

Code: Alles auswählen

                if( in_array('g' . $group_id,$allowed_u )) 
                { 
                         $access_allowed = true; 
                         break; 
                } 
                if( in_array('g' . $group_name,$allowed_u)) 
                { 
                         $access_allowed = true; 
                         break; 
                } 
anstatt

Code: Alles auswählen

                if( in_array('g' . $group_id[group_id],$allowed_u )) 
                { 
                         $access_allowed = true; 
                         break; 
                } 
                if( in_array('g' . $group_name[group_name],$allowed_u)) 
                { 
                         $access_allowed = true; 
                         break; 
                } 
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Hui :-?
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“