Bueno este hilo es para responder a rockero666
Cita:
Iniciado por rockero666 hola mi duda es
komo puedo crear una seccion en mi web donde solo puedan entrar ciertos grupos del foro?
En primer lugar te voy a explicar un poco en que consiste el script. Lo primero que hacemos es, como siempre, iniciar sesión phpBB con el fin de poder acceder a los datos de sesión del usuario conectado. En este caso simplemente vamos a usar $userdata['session_logged_in'] que te devuelve un booleano que te informa si el usuario conectado es un nick(por decirlo sin protocolos) y tb usaremos $userdata['user_id'] para 'preguntar' mediante un query SQL por los grupos a los que el usuario pertenece.
Bueno, lo que hacemos básicamente es introducir en un array ($acceso_a_grupos) los grupos a los que permitiremos entrar si el usuario pertenece, luego almacenamos en otro array los grupos a los que el usuario pertenece. Posteriormente recorremos el array de los grupos a los que pertence el usuario y si hay alguna coincidencia con los grupos a los que se permite entrar daremos paso.
Poco más o menos es eso. Si sabes php lo entenderás enseguida :)
Código PHP:
<?
$volver="/index1.php";
define('IN_PHPBB', true);
$phpbb_root_path = ''; //PATH DEL FORO RESPECTO DEL SCRIPT
if (!function_exists("init_userprefs"))
{
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
global $db, $board_config;
global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;
$cookiename = $board_config['cookie_name'];
$cookiepath = $board_config['cookie_path'];
$cookiedomain = $board_config['cookie_domain'];
$cookiesecure = $board_config['cookie_secure'];
}
$acceso_a_grupos=array("Moderadores","Administradores");
if ( !(isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) || isset($HTTP_COOKIE_VARS[$cookiename . '_data'])) )
{
output_add_rewrite_var('sid', $userdata['session_id']);
}
if ( $userdata['session_logged_in'] )
{
$sql = mysql_query("SELECT g.group_id, g.group_name, g.group_type, ug.user_pending
FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug
WHERE ug.user_id = " . $userdata['user_id'] . "
AND ug.group_id = g.group_id
AND g.group_single_user <> " . TRUE . "
ORDER BY g.group_name, ug.user_id");
while($row=mysql_fetch_array($sql))
$membresia_usuario[]=$row['group_name'];
}
$acceso=FALSE;
if (is_array($membresia_usuario))
{
foreach($membresia_usuario as $grupo)
if (in_array($grupo,$acceso_a_grupos))
$acceso=TRUE;
}
if ($acceso)
{
// Aqui ya pones lo que se mostraría si el usuario es de alguno de los grupos definidos en el array $acceso_a_grupos
print "acceso permitido";
}
else
{
print "acceso denegado";
}
?>
Lo principal, rockero, es que definas en esta línea los grupos a los que quieres dar acceso:
Código PHP:
$acceso_a_grupos=array("Moderadores","Administradores");
Yo puse moderadores y administradores cómo ejemplo, te dejo un par de ejemplos.
1.- Dar acceso a los usuarios que pertenecen al grupo programadores
Código PHP:
$acceso_a_grupos=array("programadores");
2.- Dar acceso a los usuarios que pertenecen al grupo programadores o diseñadores
Código PHP:
$acceso_a_grupos=array("programadores","diseñadores");
Y poco más simplemente recuerda de poner el nombre del grupo tal y cómo está, o sea con las mayúsculas si las tiene en su sitio.
Salu2 ;)