Group_Access Mod - Seite nur für bestimmte Gruppe

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
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Group_Access Mod - Seite nur für bestimmte Gruppe

Beitrag von mgutt »

Ich habe den group_access mod, also die Abfrage, ob der User in einer bestimmten Gruppe ist, auf einer Seite eingebaut, aber die Abfrage geht nicht so wirklich.

Egal ob ich der Gruppe angehöre bzw. ich bin ja Admin, die Seite wird mit einer Fehlermeldung geblockt:

"Sie haben keinen Zugriff auf diese Seite."

Test:

www.maxrev.de/gruppentest.php



Code: (Ich bin Mitglied aller aufgelisteten Gruppen.. sollte also eigentlich gehen.. :cry: )

Code: Alles auswählen

<?php 
/*************************************************************************** 
*                name.php  Gruppenverwaltung zum Schutz von Websites
*                            ------------------- 
*   copyright            : (C) 2002 
*   email                : mail 
* 
* 
* uses phpBB technology (c) 2001 phpBB Group <http://www.phpbb.com/> 
* 
***************************************************************************/  

/* ************************************************************************** 
* 
*   This program is free software; you can redistribute it and/or modify 
*   it under the terms of the GNU General Public License as published by 
*   the Free Software Foundation; either version 2 of the License, or 
*   (at your option) any later version. 
* 
***************************************************************************/  


define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

// 
// Start session management 
// 
  $userdata = session_pagestart($user_ip, PAGE_INDEX); 
  init_userprefs($userdata); 
// 
// End session management 
// 

include($phpbb_root_path . 'includes/page_header.'.$phpEx); 


// User die zugriff haben: es sind gruppen_ids, gruppennamen und user_ids  erlaubt wobei bei den gruppen namen und ids ein g am anfang angehängt werden muss. 
$allowed_u = array(); 
$allowed_u[] = 'g12'; //gruppe
$allowed_u[] = 'g379'; //gruppe
$allowed_u[] = 'g380'; //gruppe
$allowed_u[] = 'g480'; //gruppe

$access_allowed = false; 
if( in_array($userdata['user_id'],$allowed_u)) 
{ 
        $access_allowed = true; 
} 

else 
{ 
        $sql = "SELECT g.group_id, g.group_name 
                FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g 
                WHERE ug.user_id = '" . $userdata['user_id'] . "' 
                        AND g.group_id = ug.group_id"; 
        if ( !($result = $db->sql_query($sql)) ) 
        { 
                message_die(GENERAL_ERROR, 'Could not get user group.', '', __LINE__, __FILE__, $sql); 
        } 
        $access_allowed = false; 
        while( list($group_id, $group_name) = $db->sql_fetchrow($result) ) 
        { 
                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; 
                } 
        } 
        if( !$access_allowed ) 
        { 
                message_die(GENERAL_MESSAGE, 'Sie haben keinen Zugriff auf diese Seite.'); 
        } 
} 

?>

Ja geht doch ;)

<?php

include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>

Füge ich jedoch diese Codezeile hinzu:

Code: Alles auswählen

$allowed_u[] = 'g3'; //gruppe
Damit also die Gruppe mit der Nummer "3", der ich auch zugehöre, dann geht es.

Die Gruppe mit der Nummer "3" ist sehr alt.. also einer der ersten Gruppen überhaupt, aber was hat es damit auf sich :-?
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Nach langer langer Suche und einzelnen echo Ausgaben habe ich den Fehler herausgefunden (so glaube ich zumindest)

Dieser Code:

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; 
                }
muss so lauten:

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; 
                }
Denn dieser Befehl "$group_id[group_id]," verursacht, dass nur die 1. Stelle aus dem Arraywert zum Vergleich herangezogen wird. Also bei der Gruppe "12" nur die "1". Dadurch kommt es zum Fehler.

Nachdem ich das ganze auf "$group_id" reduziert habe, kamen die richtigen Ergebnisse zu Stande.

Da die Seite auf phpbb.de in der Dokumentation erklärt wird, sollte man da über eine Fehlerkorrektur nachdenken.

Vielleicht erklärt mir noch jemand das "warum", damit ich wieder ruhig schlafen kann ;)

was bewirkt der Wert in den eckigen Klammer ( "$group_id[group_id]," ) normalerweise ?
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
RobertC
Mitglied
Beiträge: 110
Registriert: 19.07.2004 13:17

Beitrag von RobertC »

Ich hab auch ein Problem mit der Abfrage der Gruppenzugehörigkeit.
Trage Ich User Id's ein, funktioniert es. Wenn Ich Gruppen Id's oder Gruppennamen eintrage geht es nicht. :cry:
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

genau das problem hatte ich doch hier beschrieben :-?

du musst die änderung meines letzten posts durchführen.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Antworten

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