Foros del Web » Creando para Internet » Sistemas de gestión de contenidos »

Permitir que sólo ciertos grupos del foro vean página - phpbb

Estas en el tema de Permitir que sólo ciertos grupos del foro vean página - phpbb en el foro de Sistemas de gestión de contenidos en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 30/07/2005, 01:55
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
Permitir que sólo ciertos grupos del foro vean página - phpbb

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_ipPAGE_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 ;)
__________________
[+]
[+]

Última edición por yoseman; 30/07/2005 a las 04:16 Razón: El título me pareció ambiguo
  #2 (permalink)  
Antiguo 30/07/2005, 07:21
 
Fecha de Ingreso: julio-2004
Mensajes: 51
Antigüedad: 20 años, 4 meses
Puntos: 0
m funciona bien el problema es lo q t dije del menu en el otro post
PD: gracias yoseman

Última edición por rockero666; 01/08/2005 a las 04:15
  #3 (permalink)  
Antiguo 07/10/2005, 17:51
 
Fecha de Ingreso: diciembre-2003
Mensajes: 27
Antigüedad: 20 años, 11 meses
Puntos: 0
Hola. Visto que no me ha servido para nada el otro hilo en el que he posteado, mas que nada porque nadie me ha respondido (ademas que me han ayudado en el canal oficial de IRC de phpbb), y viendo este hilo que tambien me interesa, pido ayuda de quien sepa hacer lo que necesito.

He estado haciendo pruebas con el codigo que pones, yoseman, pero no me funciona. Lo que necesito, y me harias un grandisimo favor si me lo hicieras, es en el codigo que te voy a poner y que me funciona perfectamente para lo que necesito, incluyeras el codigo necesario para restringir ciertas partes de la web. En concreto hay 3 grupos (Admins. Moderadores y Registrados).

Código PHP:
<?PHP
$volver
="index.php"
define('IN_PHPBB'true); 
$phpbb_root_path 'foro/'//PATH DEL FORO RESPECTO DEL SCRIPT 
include($phpbb_root_path 'extension.inc'); 
include(
$phpbb_root_path 'common.'.$phpEx); 
$userdata session_pagestart($user_ipPAGE_INDEX);
init_userprefs($userdata); 
?>
<html>
<head>
<title>:: NiRiDa Studios :: Portada ::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" background="Images/fondo.gif">
<!-- ImageReady Slices (plantilla.psd) -->
<div align="center">
  <center>
<table id="Tabla_01" width="800" height="600" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
        <tr>
                <td colspan="3">
                        <img src="Images/plantilla_01.gif" width="800" height="407" alt=""></td>
        </tr>
        <tr>
                <td rowspan="2">
                        <img src="Images/plantilla_02.gif" width="13" height="193" alt=""></td>
                <td>
                        <table id="Tabla_02" width="156" height="163" border="0" cellpadding="0" cellspacing="0">
                                <tr>
                                        <td width="156" height="163" align="center" valign="top">
                                                &nbsp;<? 
 
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']; 
// determinamos si cookie activada sino propagamos sid por url 
   
if ( !(isset($HTTP_COOKIE_VARS[$cookiename '_sid']) || isset($HTTP_COOKIE_VARS[$cookiename '_data'])) ) 
   { 
   
output_add_rewrite_var('sid'$userdata['session_id']); 
   } 
   
//determinamos si usuario logueado para mostrar en link login o logout 
$log_in_out=( $userdata['session_logged_in'] ) ? ('<a href="'.$phpbb_root_path.'login.'.$phpEx.'?logout=true&sid=' $userdata['session_id'].'&redirect='.$volver.'">LOGOUT</a>') : ('LOGIN'); 
// si usuario logueado mostramos su avatar 
if ($userdata['user_id']!=-1

switch (
$userdata['user_avatar_type']) 

case 
$ruta_de_avatar '' ;break; 
case 
$ruta_de_avatar "<img src='/"$phpbb_root_path .$board_config['avatar_path'] . '/' $userdata['user_avatar'] . "' />";break; 
case 
$ruta_de_avatar "<img src='/" .$userdata['user_avatar'] . "' />";break; 
case 
$ruta_de_avatar "<img src='/" $phpbb_root_path.$board_config['avatar_gallery_path'] . '/' $userdata['user_avatar'] . "' />";break; 

$log_in_out .= "<div align=\"center\">" $ruta_de_avatar "<b>" $userdata['username'] . "</b></div>"

else { 
$log_in_out .="<div align=\"center\"><b>Anónimo</b>"
}
?> 
<link rel="stylesheet" href="foro/templates/alexis/alexis.css" type="text/css"> 
<div align="center"> 
<?
 
?>
 
<div align="center"> 
 
<? 
print $log_in_out."<br /><br /><br />"
if (!
$userdata['session_logged_in']) 

?> 
<form action="<?=$phpbb_root_path?>login.php" method="post"> 
<input type="hidden" name="redirect" value="<?=$volver?>?sid=<?=$userdata['session_id']?>"> 
Nick: &nbsp;<input type="text" name="username" size="10" /><br> 
Pass: &nbsp;<input type="password" name="password" size="10" maxlength="32" /><br /><br />
&nbsp;&nbsp; &nbsp;&nbsp;Recordarme 
      <input class="text" type="checkbox" name="autologin" /> 
 
      &nbsp;&nbsp;&nbsp; 
      <input type="submit" class="mainoption" name="login" value="Login" /> 
</form> 
</div> 
<?
else 

        
$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"
); 
$cont=1
while(
$row=mysql_fetch_array($sql)) 
$grupos.=" <b>".$row['group_name']."</b>,"
if (
mysql_num_rows($sql)>0) print "Grupos: "$grupos;}?></td>
                                </tr>
                        </table></td>
                <td rowspan="2">
                        <img src="Images/plantilla_04.gif" width="631" height="193" alt=""></td>
        </tr>
        <tr>
                <td>
                        <img src="Images/plantilla_05.gif" width="156" height="30" alt=""></td>
        </tr>
</table>
  </center>
</div>
    </div>
<!-- End ImageReady Slices -->
</body>
</html>
Si sirve de algo, la pagina la estoy haciendo con Photoshop y Frontpage, y de momento va bien lo del login: www.niridastudios.com

Gracias de antemano al que ayude.
  #4 (permalink)  
Antiguo 08/10/2005, 12:53
 
Fecha de Ingreso: diciembre-2003
Mensajes: 27
Antigüedad: 20 años, 11 meses
Puntos: 0
¿Que pasa, que nadie es capaz de ayudarme con mis dudas?, en el otro hilo del login del phpbb en otras partes de una web tampoco me ha respondido nadie, y no puse el mensaje precisamente hoy, y en el foro de tomatoma.ws tampoco, y lo puse hace 3 dias.
  #5 (permalink)  
Antiguo 18/10/2005, 15:12
 
Fecha de Ingreso: julio-2004
Mensajes: 51
Antigüedad: 20 años, 4 meses
Puntos: 0
yo t ayudaria pro no se pro no eres el unico yo tambien puse un post en septiembre y a dia d hoy nadie a contestado y yo no se si es porque no saben o no les da la gana de contestar no lo digo por ofender a nadie pro esq es verdad porque llevo mas d un mes y nadie a respondido
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:43.