Abfrage der Gruppenzugehörigkeit

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
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.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
scheibenbrot
Mitglied
Beiträge: 1552
Registriert: 23.12.2005 14:32

Abfrage der Gruppenzugehörigkeit

Beitrag von scheibenbrot »

Hallo,
ich verstehe nicht genau, was man mit DIESEM MOD machen muss, damit es funktioniert.
Hier mal der Code:

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[] = 'g3'; //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.'); 
        } 
} 

include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>
In der readme steht folgendes:

Code: Alles auswählen

$phpbb_root_path = './'; muss entsprechend angepasst werden 

Vor include($phpbb_root_path . 'includes/page_tail.'.$phpEx); kommt der Inhalt der Website 

$allowed_u[] = 'g3'; //gruppe ist ein Array mit den Gruppen. Für mehrere Gruppen einfach 
$allowed_u[] = 'g3'; //gruppe 
$allowed_u[] = 'g4'; //gruppe 
usw.
Aber ich verstehe z.B. nicht, wo der Code hin muss, was nur für eine Gruppe sichtbar sein soll.
Also ich möchte die gesammte ignorlist da einbaun, aber wie??

mfg
Love is the slowest form of suicide.
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Re: Abfrage der Gruppenzugehörigkeit

Beitrag von punkface »

Hallo
CoolKetschup hat geschrieben: Aber ich verstehe z.B. nicht, wo der Code hin muss, was nur für eine Gruppe sichtbar sein soll.
Wie schon in der index.txt steht, muss der Code der Seite, welche nur für bestimmte Benutzer zugänglich sein soll, vor

Code: Alles auswählen

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
eingefügt werden.

Welche Benutzer oder Gruppen zutritt haben, bestimmst du im Array $allowed_u Die Erklärung dazu steht in der name.php:

Code: Alles auswählen

// 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. 
Bspw. mit

Code: Alles auswählen

$allowed_u = array(2, 'g1', 'ggruppe1');
würden alle Benutzer die Seite anschauen können, die
- in der Benutzergruppe mit der ID 1
- in der Benutzergruppe mit dem Namen gruppe1
sind, und der Benutzer mit der ID 2

Du brauchst also schon etwas PHP Kenntnisse für den MOD. Wenn du damit nicht zurecht kommst, erklär mal genau was du haben willst. Also welche Ignorlist du meinst (Name des MODs) und welche Gruppe(n) die Ignorlist anschauen dürfen (IDs der Gruppen).
Benutzeravatar
scheibenbrot
Mitglied
Beiträge: 1552
Registriert: 23.12.2005 14:32

Beitrag von scheibenbrot »

Hallo,
danke, dass du mir hilfst :)
Also der Link zu dem MOD findest du HIER.
Ich möchte das nur die Gruppe mit der ID 29 diese Seite betreten, öffnen, kann.
Danke

mfg
Love is the slowest form of suicide.
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Beitrag von punkface »

Speicher diesen Code mal als function_group_access.php im Verzeichnis includes/

Code: Alles auswählen

<?php
/*
Code vom MOD "Abfrage der Gruppenzugehörigkeit" von saerdnaer - http://www.phpbb.de/moddb/group_access
*/

function group_access($access_ary)
{
	global $db, $userdata;

	if( in_array($userdata['user_id'], $access_ary) ) 
	{ 
		return 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); 
		}

		while($row = $db->sql_fetchrow($result) ) 
		{ 
			if( in_array('g' . $row['group_id'], $access_ary) ) 
			{ 
				return true; 
			} 

			if( in_array('g' . $row['group_name'], $access_ary) ) 
			{ 
				return true;
			} 
		} 
	}

	return false;
}
?>

ignore.php
suche

Code: Alles auswählen

//
// End session management
//
danach einfügen

Code: Alles auswählen

include_once($phpbb_root_path . 'includes/function_group_access.' . $phpEx);
if(!group_access(array('g29')))
{
	message_die(GENERAL_MESSAGE, $lang['Disallowed_Page_Access']); 
}
(Das könntest du jetzt z.B. genau so auch in der memberlist.php benutzten, wenn diese nur die Mitglieder aus der Benutzergruppe mit der ID 29 sehen sollen.)

language/lang_german/lang_main.php
suche davor einfügen

Code: Alles auswählen

$lang['Disallowed_Page_Access'] = 'Zugriff auf diese Seite verwehrt';
(die lang_main.php's anderer installierter Sprachen müssen auch angepasst werden)
Zuletzt geändert von punkface am 07.08.2006 02:15, insgesamt 1-mal geändert.
Benutzeravatar
scheibenbrot
Mitglied
Beiträge: 1552
Registriert: 23.12.2005 14:32

Beitrag von scheibenbrot »

Hey danke, das sieht schon gut aus.
Ich bin aber schon lange auf den Beinen, ich geh dann jetzt mal ins Bett, ich werd heut früh ausprobieren, aber es sieht schon gut aus, ich glaube das war die Lösung
Danke

mfg
Love is the slowest form of suicide.
Benutzeravatar
scheibenbrot
Mitglied
Beiträge: 1552
Registriert: 23.12.2005 14:32

Beitrag von scheibenbrot »

CoolKetschup hat geschrieben:Hey danke, das sieht schon gut aus.
Ich bin aber schon lange auf den Beinen, ich geh dann jetzt mal ins Bett, ich werd heut früh ausprobieren, aber es sieht schon gut aus, ich glaube das war die Lösung
Danke

mfg



edit: :o :o :o juhu es geht, 100000 Dank
Love is the slowest form of suicide.
mafiatom
Mitglied
Beiträge: 11
Registriert: 08.08.2006 11:02

Beitrag von mafiatom »

In dem Script hatte sich ein Fehler eingeschlichen, richtig muss es heissen:

Code: Alles auswählen

        while($ergebnis = $db->sql_fetchrow($result) )
        { 
                if( in_array('g' . $ergebnis[group_id],$allowed_u )) 
                { 
                         $access_allowed = true; 
                         break; 
                } 
                if( in_array('g' . $ergebnis[group_name],$allowed_u)) 
                { 
                         $access_allowed = true; 
                         break; 
                } 
        } 
Dann klappt es auch mit den Gruppen!
Benutzeravatar
scheibenbrot
Mitglied
Beiträge: 1552
Registriert: 23.12.2005 14:32

Beitrag von scheibenbrot »

Funktioniert ja schon, dank punkface :wink:
Love is the slowest form of suicide.
Antworten

Zurück zu „phpBB 2.0: Mod Support“