Seite 1 von 1

Gruppenverwaltung von Websites Prob

Verfasst: 08.01.2004 15:00
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

Re: Gruppenverwaltung von Websites Prob

Verfasst: 08.01.2004 17:48
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'] );
        }

Verfasst: 08.01.2004 19:41
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; 
                } 

Verfasst: 08.01.2004 20:55
von itst
Hui :-?