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

Utilizar el sistema de registro y autentificación de phpbb para otras secciones web

Estas en el tema de Utilizar el sistema de registro y autentificación de phpbb para otras secciones web en el foro de Sistemas de gestión de contenidos en Foros del Web. buenas, en mi web tengo instalados los foros phpbb y bueno ahora quiero crear más secciones donde los usuarios tienen que estar registrados, llevo varios ...

  #1 (permalink)  
Antiguo 14/01/2005, 07:05
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Utilizar el sistema de registro y autentificación de phpbb para otras secciones web

buenas,

en mi web tengo instalados los foros phpbb y bueno ahora quiero crear más secciones donde los usuarios tienen que estar registrados, llevo varios dias dandole vueltas a todos los archivos del phpbb relacionados con el login y con el registro de los nuevos usuarios y no soy capaz de hacer que al registrarse un usuario mediante el registro de phpbb pueda acceder con esos datos de registro (pass y user) a las secciones que quiero crear como (descargas, uploads.... etc)

Estoy un poco pez en php, y mysql pero por mas que leo y leo no doy la forma de poder hacer lo que os he comentado

porfavor, alguien puede especificarme como puedo restringir el acceso a una pagina de mi web utilizando el login de phpbb 2.0.11

estoy mas perdido que espinete en una fiesta techno

una ayuda please o un enlace a algun tutorial en español donde se trate esta duda.

gracias anticipadas

bye
  #2 (permalink)  
Antiguo 14/01/2005, 09:56
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
¿nadie sabe nada?

yo solo se que mas o menos debo de hacer un script en las paginas que quiero restringir que compruebe si el usuario esta "logineado" o no lo esta, para ello debe de comprobarlo en MySQl, pero la duda mas grande qeu tengo al respecto es:

-si un usuario entra directamente a la seccion foro (proporcionada por phpbb) y se loginea en esa sección y luego desde el foro opta por entrar en otra sección de usuarios restringidos por ejemplo "downloads". como reconocerá la sección downloads que el usuario esta correctamente logineado.


Última edición por MindPaniC; 14/01/2005 a las 09:57
  #3 (permalink)  
Antiguo 14/01/2005, 11:41
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Para seguir una sesión iniciada con phpBB en otro script tuyo tienes que encabezar dicho script con el siguiente código:
Código PHP:
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_ipPAGE_INDEX);
init_userprefs($userdata);
//
// End session management
// 
En caso de que tu script no esté en el directorio raíz de phpBB, en la variable $phpbb_root_path tienes que sustituir el valor './' por la ruta del foro relativa a tu script.
Lo que hace más o menos es iniciar la sesión o seguir con la existente. Además luego te puedes servir del array que se crea que contiene un registro que te servirá para evaluar si el usuario es un invitado o no, o sea si se ha logueado o no.

Código PHP:
if ( $userdata['session_logged_in'] )
{
//lineas de tu script que se ejecutan si el usuario esta logueado
}
else
{
print
"lo sentimos pero debes de loguearte para acceder a está sección";

Por otra parte todos los scripts que crees deberás encabezarlos con ése código que te puse para que no se pierda la sesión.
Para crear un formulario en una página ajena al foro pero que te loguee en phpBB, deberás de crearte un formulario de este tipo:
Código PHP:
<form action="phpBB2/login.php" method="post">
<
input type="hidden" name="redirect" value="../main.php">
<
input type="text" name="username" size="10" /><br>
<
input type="password" name="password" size="10" maxlength="32" /><br />
</
form
Dónde action="phpBB2/login.php" debe de contener la ruta del script login.php respecto de la de tu script(dónde está el formulario) y dónde value="../main.php" es la página (otra vez ruta relativa pero esta vez respecto de la ruta del foro) dónde volverá una vez logueado.

Comprendo que es algo complicadillo, pero intentando un poquillo se consigue



Salu2 ;)
__________________
[+]
[+]

Última edición por yoseman; 14/01/2005 a las 11:45
  #4 (permalink)  
Antiguo 14/01/2005, 12:26
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Muchas gracias por la ayuda Yoseman.. pero tengo alguna que otra duda sobre lo que me comentas:

¿desde cualquier directorio o subdirectorio con sus webs dentro se puede hacer lo que dices?

¿como se logra que se comprueben los datos en cualquier pagina auque este en cualquier directorio o subdirectorio?

se supone que donde se comprueban los datos es en la base de datos creada al instalar phpBB, pero... ¿se pueden comprobar los datos desde cualquier pagina alojada en directorios o subdirectorios diferentes a los de phpBB donde se supone que esta todo el tema del login y esas movidas?

joder... estoy muy pez y solo entiendo partes de tu codigo.

ains que chungo es el php cuando uno es noob total.

voy a probar el codigo y si algo falla volveré para preguntar.
  #5 (permalink)  
Antiguo 14/01/2005, 13:28
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
De lo que se trata es de poner bien las rutas en las variable phpbb_root_path y en los campos del formulario.
Por ejemplo si tu tienes :
|-raiz
...|-phpBB
...|-1_directorio
......|-2_hijo_de_1_directorio
si tu script está en raíz: $phpbb_root_path = 'phpBB/';
si tu script está en 1_directorio hijo del raíz: $phpbb_root_path = '../phpBB/';
si tu script está en 2_hijo_de_1_directorio hijo del raíz: $phpbb_root_path = '../../phpBB/';
si tu script está en el mismo directorio de phpBB: $phpbb_root_path = './'; Más o menos es subir directorios con ../ hasta llegar al raíz y luego poner phpBB/
Configurando eso correctamente, la sesión se debe de iniciar. Con respecto de tu duda de consultas a la base de datos etc, cuando phpBB inicia sesión prepara una serie de variables, cómo te decía antes concernientes por ejemplo al usuario conectado. Entonces una vez cargada esta cabecera, no requieres ni siquiera incluir el archivo config.php para conectarte a la base de datos, ni consultar nada a la db sobre los usuarios, por ejemplo para saber si el usuario conectado se logueo con evaluar if ( $userdata['session_logged_in'] ) te bastaría, ya que es un array que se actualiza a cada carga de página para ése usuario. Por eso es precisamente tan importante que incluyas esa cabecera en todos los scripts de tu sitio, para que vaya dónde vaya el usuario, phpBB(en este caso, tu sistema de usuarios) pueda actualizar a cada carga los datos del usuario y sesión.

Salu2 ;)
__________________
[+]
[+]
  #6 (permalink)  
Antiguo 15/01/2005, 20:49
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Bueno estoy probando tu codigo con el index de mi web, y si funciona el poder registrarme desde el index de mi web, pero no soy capaz de poner bien la ruta en la redirección y siempre que me logueo ponga lo que ponga me salta a el index de los foros phpBB. el index de mi web esta en:

G:sevidor/www/index.php

los foros estan en:

G:servidor/www/foros/index.php.

he probado de todo y no me deja en el index de mi web.

Otra cosa, he utilizado los pekeños iconos de phpBB que salen arriba (miembros, faq, login... etc) en el index de mi web, y quiero conseguir que si estoy loguineado me salga lo de (loguin out) en el icono de login (exactamente como sale cuando estas en los foros)

Esta es la parte del codigoq que creo que hay qeu modificar para conseguir el loguin out:

Código PHP:
&nbsp;<a href="{U_LOGIN_LOGOUT}" class="mainmenu"><img src="templates/subBlack/images/icon_mini_login.gif" width="12" height="13" border="0" alt="{L_LOGIN_LOGOUT}" hspace="3" />{L_LOGIN_LOGOUT}</a>&nbsp;</span></td
en: (a href="{U_LOGIN_LOGOUT}" ) que debo de poner, a que archivo llama para el login out.???

Bueno hay queda la pregunta.

bye
  #7 (permalink)  
Antiguo 16/01/2005, 18:04
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
¿Nadie sabe nada al respecto?

Un slaudo y gracias anticipadas.
  #8 (permalink)  
Antiguo 25/01/2005, 17:02
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona (spain)
Mensajes: 56
Antigüedad: 19 años, 2 meses
Puntos: 0
Exclamación toma ya!

dentro de las etiquetas php i dentro de la condicion de usuaro si logeado debes poner

ademas pongo otros ejemplos de enlaces, como editar tu perfil, i leer mensajes privados

recordad, q cuando hagais logout, no podeis decidir a donde te dejara, el foro te deja en su index.php.


Código PHP:
<?
if ( $userdata['session_logged_in'] ) 

//lineas de tu script que se ejecutan si el usuario esta logueado 
?>

<a href="<?php echo $phpbb_root_path ?>login.php?logout=true&sid=<? print $userdata['session_id']; ?>">Logout [ <?php echo $userdata[username?> ]</a>
<br>
<br> 
<a href="<?php echo $phpbb_root_path ?>profile.php?mode=editprofile" >Perfil</a>
<br>
<br>
<a href="<?php echo $phpbb_root_path ?>privmsg.php?folder=inbox"><?php echo $l_privmsgs_text ?></a> 
<br>
<?

?>
se entiende?
__________________
http://www.bezerik.net
Atención:
- Antes de preguntar lee las FAQ , los Tutoriales, utiliza el Motor de Búsquedas o revisa en Google
- Plantea tus dudas correctamente para que lo demás puedan entenderte. ¿Como hacer preguntas inteligentes?
- Evita colocar títulos como "Ayudaaaa" "Urgenteeeee" porque degradan el motor de búsquedas y resultan desagradables.

Última edición por Bezerik; 26/01/2005 a las 05:06
  #9 (permalink)  
Antiguo 25/01/2005, 17:57
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Código:

<?
$volver="../index.php";
define('IN_PHPBB', true);
$phpbb_root_path = 'foros/'; //PATH DEL FORO RESPECTO DEL SCRIPT
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'];
// 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  ['.$userdata['username'].']</a>') : ('LOGIN');
// si usuario logueado mostramos su avatar
if ($userdata['user_id']!=-1)
{
switch ($userdata['user_avatar_type'])
{
case 0 : $ruta_de_avatar = '' ;break;
case 1 : $ruta_de_avatar = "<img src=\"" . $phpbb_root_path .$board_config['avatar_path'] . '/' . $userdata['user_avatar'] . "\">";break;
case 2 : $ruta_de_avatar =  "<img src=\"" .$userdata['user_avatar'] . "\" >";break;
case 3 : $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 . "<br /><b>" . $userdata['username'] . "</b></div>";
}
else {
$log_in_out .="<div align=\"center\"<b>Usuario anónimo</b></div>";
}
?>
<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']?>">
Usuario:&nbsp;<input type="text" name="username" size="10" /><br>
Contrase&ntilde;a:&nbsp;<input type="password" name="password" size="10" maxlength="32" /><br />
&nbsp;&nbsp; &nbsp;&nbsp;Entrar automáticamente en cada visita
      <input class="text" type="checkbox" name="autologin" />

      &nbsp;&nbsp;&nbsp;
      <input type="submit" class="mainoption" name="login" value="Login" />
</form>
</div>
<?}?>
Prueba este código a ver si te sirve, lo que generá es el login(logout según se este o no conectado, muestra formulario de conectar si no se esta logueado y muestra además avatar si se esta logueado.

A ver si esta vez acertamos

Salu2 ;)
__________________
[+]
[+]
  #10 (permalink)  
Antiguo 26/01/2005, 08:50
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona (spain)
Mensajes: 56
Antigüedad: 19 años, 2 meses
Puntos: 0
Exclamación toma ya 2, pero de el

Excellente, no sabia que pudieras hacer log out y que te redirecionara a la pagina desde la cual habias salido. por cierto, lo del avatar tambien es muy bueno!

un 10!

Gracias

PD: me gustaria averiguar, como descubrir a que grupos forma parte un usario , y que cuando este estuviera logeado, printara "perteneces al grupo nombre_grupo"
__________________
http://www.bezerik.net
Atención:
- Antes de preguntar lee las FAQ , los Tutoriales, utiliza el Motor de Búsquedas o revisa en Google
- Plantea tus dudas correctamente para que lo demás puedan entenderte. ¿Como hacer preguntas inteligentes?
- Evita colocar títulos como "Ayudaaaa" "Urgenteeeee" porque degradan el motor de búsquedas y resultan desagradables.
  #11 (permalink)  
Antiguo 26/01/2005, 09:47
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona (spain)
Mensajes: 56
Antigüedad: 19 años, 2 meses
Puntos: 0
una posible modificacion seria:
Código PHP:
<?
$volver
="..$_SERVER[PHP_SELF]";
define('IN_PHPBB'true);
$phpbb_root_path 'foros/'//PATH DEL FORO RESPECTO DEL SCRIPT
include($phpbb_root_path 'extension.inc');
include(
$phpbb_root_path 'common.'.$phpEx);
......
.....
....
// el codigo sigue en el post anterior de Yoseman
...
..
lo unico q e canviado a sido:
$volver="..$_SERVER[PHP_SELF]";

de esta manera conseguimos, automatizamos, que al hacer logout, volvamos a la pagina desde donde haviamos inciado el proceso de logout, y no a index.php que vendria a ser la pagina principal de nuestra web (pagina que nosotros introducimos manualmente). no confundir con index.php pagina principal del foro, que segun este ejemplo se encuentra en una carpeta llamada "foros".

PD: INSISTO : me gustaria averiguar, como descubrir a que grupos forma parte un usario , y que cuando este estuviera logeado, printara "perteneces al grupo nombre_grupo"
__________________
http://www.bezerik.net
Atención:
- Antes de preguntar lee las FAQ , los Tutoriales, utiliza el Motor de Búsquedas o revisa en Google
- Plantea tus dudas correctamente para que lo demás puedan entenderte. ¿Como hacer preguntas inteligentes?
- Evita colocar títulos como "Ayudaaaa" "Urgenteeeee" porque degradan el motor de búsquedas y resultan desagradables.

Última edición por Bezerik; 26/01/2005 a las 09:49
  #12 (permalink)  
Antiguo 28/01/2005, 04:23
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Yoseman es cojonudo lo que has puesto, esta muy bien el tema del avatar y funciona a la perfección. lo que comenta Bezerik sobre el tema de los grupos tambien es una cosa interesante ¿como se podría hacer? no se que terminos usa phpBB exactamente para ese caso y seria interesante conocerlas para asi poder hacer modificaciones.

Un saludo y muchisimas gracias.
  #13 (permalink)  
Antiguo 29/01/2005, 14:07
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
He estado probando y se trataría de algo así, aunque aún no lo tengo muy claro:
Código PHP:
<?
$volver
="../index.php";
define('IN_PHPBB'true);
$phpbb_root_path 'foros/'//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);
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  ['.$userdata['username'].']</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 "<br /><b>" $userdata['username'] . "</b></div>";
}
else {
$log_in_out .="<div align=\"center\"><b>Usuario anónimo</b></div>";
}
?>
<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']?>">
Usuario:&nbsp;<input type="text" name="username" size="10" /><br>
Contrase&ntilde;a:&nbsp;<input type="password" name="password" size="10" maxlength="32" /><br />
&nbsp;&nbsp; &nbsp;&nbsp;Entrar automáticamente en cada visita
      <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 "perteneces a los siguientes grupos: "$grupos;}
Es que no me ha dado tiempo de probar si hay algún fallejo.

Salu2 ;)
__________________
[+]
[+]

Última edición por yoseman; 02/02/2005 a las 06:51
  #14 (permalink)  
Antiguo 02/02/2005, 00:56
 
Fecha de Ingreso: febrero-2005
Mensajes: 11
Antigüedad: 19 años, 2 meses
Puntos: 0
Hola! soy nuevo y use el script que pusieron y me funciona perfecto ^_^, aunque tngo una duda, como es posible que despues de haber iniciado mi sesion poder ver mi avatar en el firefox y luego uso el IE y ya no se ve?

Última edición por Shiryu_20; 02/02/2005 a las 00:57
  #15 (permalink)  
Antiguo 02/02/2005, 04:23
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona (spain)
Mensajes: 56
Antigüedad: 19 años, 2 meses
Puntos: 0
Yoseman!

he comprobado el script, funciona, pero hay unas cosillas a comentar.
1. no cierras el ultimo else con corchete.
2. en el caso de introducir, aquellos 2 enlaces (que yo añadi a tu script) que muestran un enlace para ir directamente a editar el perfil i los mensajes privados:

Código PHP:
<a href="<?php echo $phpbb_root_path ?>profile.php?mode=editprofile" >Perfil</a>

<a href="<?php echo $phpbb_root_path ?>privmsg.php?folder=inbox"><?php echo $l_privmsgs_text ?></a>
este ultimo, era un enlace, que si no tenias mensajes nuevos, mostraba "No tienes mensajes nuevos", pero en el caso de tener 1 o mas, mostraba "Tiene N mensajes nuevos", siendo N el numero de mensajes.

pero el problema recae, en que si hacemos servir el sistema presentado por YOSEMAN,(que por cierto es muy util), el valor de la variable $l_privmsgs_text es nulo.(es decir, esta vacia) <--- fijaros que esta variable lo utilizo yo en el ejemplo anterior.

entonces, mi pregunta es, hay algun modo de solucionar este asunto, yoseman???

gracias por el tiempo que le dedicaiis.

gracias

xavi
__________________
http://www.bezerik.net
Atención:
- Antes de preguntar lee las FAQ , los Tutoriales, utiliza el Motor de Búsquedas o revisa en Google
- Plantea tus dudas correctamente para que lo demás puedan entenderte. ¿Como hacer preguntas inteligentes?
- Evita colocar títulos como "Ayudaaaa" "Urgenteeeee" porque degradan el motor de búsquedas y resultan desagradables.
  #16 (permalink)  
Antiguo 02/02/2005, 07:15
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Cita:
Iniciado por Shiryu_20
Hola! soy nuevo y use el script que pusieron y me funciona perfecto ^_^, aunque tngo una duda, como es posible que despues de haber iniciado mi sesion poder ver mi avatar en el firefox y luego uso el IE y ya no se ve?
La cosa está en que no es cosa de mi script :S, las sesiones no se propagan entre distintos navegadores, prueba de iniciar sesión dentro del foro con tu nick, y luego vete a otro navegador y ve al foro(sin poner el identificador de sesión sid en la dirección) y comprobarás que no se conserva la sesión. Es decir si te vas a otro navegador tendrás que reiniciar sesión. Pero bueno eso no es lo habitual, lo habitual es estar durante la misma sesión con el netscape o con el firefox o con el I.E o con el opera o el que sea


Cita:
Iniciado por Bezerik
Yoseman!

he comprobado el script, funciona, pero hay unas cosillas a comentar.
1. no cierras el ultimo else con corchete.
2. en el caso de introducir, aquellos 2 enlaces (que yo añadi a tu script) que muestran un enlace para ir directamente a editar el perfil i los mensajes privados:

Código PHP:
<a href="<?php echo $phpbb_root_path ?>profile.php?mode=editprofile" >Perfil</a>

<a href="<?php echo $phpbb_root_path ?>privmsg.php?folder=inbox"><?php echo $l_privmsgs_text ?></a>
este ultimo, era un enlace, que si no tenias mensajes nuevos, mostraba "No tienes mensajes nuevos", pero en el caso de tener 1 o mas, mostraba "Tiene N mensajes nuevos", siendo N el numero de mensajes.

pero el problema recae, en que si hacemos servir el sistema presentado por YOSEMAN,(que por cierto es muy util), el valor de la variable $l_privmsgs_text es nulo.(es decir, esta vacia) <--- fijaros que esta variable lo utilizo yo en el ejemplo anterior.

entonces, mi pregunta es, hay algun modo de solucionar este asunto, yoseman???

gracias por el tiempo que le dedicaiis.

gracias


xavi
Pués si me comí el cierre del else, ays tanto código nos va a volver locos :S.

Para que se vean los mensajes puedes poner éste código en el último else:
Código PHP:
if ( $userdata['user_new_privmsg'] )
    {
    
$l_message_new = ( $userdata['user_new_privmsg'] == ) ? $lang['New_pm'] : $lang['New_pms'];
    
$l_privmsgs_text sprintf($l_message_new$userdata['user_new_privmsg']);
    }
else 
    {
    
$l_privmsgs_text $lang['No_new_pm'];
    } 
Bueno tiene que estar antes de tu print claro :)

Salu2 ;)
__________________
[+]
[+]
  #17 (permalink)  
Antiguo 02/02/2005, 12:45
 
Fecha de Ingreso: febrero-2005
Mensajes: 11
Antigüedad: 19 años, 2 meses
Puntos: 0
GRacias Yoseman , una ultima pregunta, ya k casi tngo listo lo k buscaba :P,
En el index d mi web tngo un pekeño panel y queria saber como pudes hacer para que se distribuya de la siguiente manera:
|Avatar| | Bienvenido (usuario el k sea)
|Avatar| | - Logout
|Avatar| | - Perfil
|Avatar| | - Mensajes

Le he dado vueltas pero no soy capaz de hacerlo, gracias de antemano y el script m ha sido de mucha ayuda, exelente trabajo

Última edición por Shiryu_20; 02/02/2005 a las 12:47
  #18 (permalink)  
Antiguo 03/02/2005, 03:35
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona (spain)
Mensajes: 56
Antigüedad: 19 años, 2 meses
Puntos: 0
Exclamación

hola, lo he hecho un poco con prisas, no lo he probado pero creo que fyuncionara

a por cierto, mas tarde voy a postear una duda, que me esta irritando un poco, es sobre el tema de las sesiones, una posible modificacion a todo lo que hemos hablado aqui . (esque ahora estoy en clase de desarollo de aplicaciones , en pocas palabras python),



Mensaje EDITADO: YA FUNCIONA EL CODIGO!
Código PHP:
if ($userdata['user_id']!=-1)
// usuario SI logeado
    
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;
    } 
// fin swicth del avatar
    
echo "<table><tr><td align='center'>" $ruta_de_avatar ."</td>";
    echo 
"<td> Bienvenido <b>" $userdata['username'] . "</b>.<br />";
    echo 
'<a href="'.$phpbb_root_path.'login.'.$phpEx.'?logout=true&sid=' $userdata['session_id'].'&redirect='.$volver.'">Logout ['.$userdata['username'].']</a><br />';
    echo 
"<a href='" $phpbb_root_path "profile.php?mode=editprofile'>Perfil</a><br />";
if ( 
$userdata['user_new_privmsg'] )
    { 
// SI hay mensajes privados
    
$l_message_new = ( $userdata['user_new_privmsg'] == ) ? $lang['New_pm'] : $lang['New_pms'];
    
$l_privmsgs_text sprintf($l_message_new$userdata['user_new_privmsg']);
    } 
else
    { 
// NO hay mensajes privados
    
$l_privmsgs_text $lang['No_new_pm'];
    }  
//fin mensajes
    
echo "<a href='" $phpbb_root_path "privmsg.php?folder=inbox'>" $l_privmsgs_text "</a><br /></td></tr></table>";
    
// fin usuario SI logeado 
nos vemos...
__________________
http://www.bezerik.net
Atención:
- Antes de preguntar lee las FAQ , los Tutoriales, utiliza el Motor de Búsquedas o revisa en Google
- Plantea tus dudas correctamente para que lo demás puedan entenderte. ¿Como hacer preguntas inteligentes?
- Evita colocar títulos como "Ayudaaaa" "Urgenteeeee" porque degradan el motor de búsquedas y resultan desagradables.

Última edición por Bezerik; 04/02/2005 a las 07:15
  #19 (permalink)  
Antiguo 03/02/2005, 12:00
 
Fecha de Ingreso: febrero-2005
Mensajes: 11
Antigüedad: 19 años, 2 meses
Puntos: 0
Gracias! lo probe berseik pero m sale Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, en esta linea

echo '<a href="'.$phpbb_root_path.'login.'.$phpEx.'?logout= true&sid=' . $userdata['session_id'].'&redirect='.$volver.'">Logout ['.$userdata['username'].']</a><br />';

siempre tengo problemas con las lineas en donde esta el logout T_T, jejeje, vere si puedo solucionarlo
  #20 (permalink)  
Antiguo 03/02/2005, 15:23
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Prueba de cambiar estas líneas(las de los echos:
Código PHP:
    echo "<table><tr><td align="center">" $ruta_de_avatar ."</td>";
    echo 
"<td> Bienvenido <b>" $userdata['username'] . "</b>.<br />";
    echo 
'<a href="'.$phpbb_root_path.'login.'.$phpEx.'?logout=true&sid=' $userdata['session_id'].'&redirect='.$volver.'">Logout ['.$userdata['username'].']</a><br />';
    echo 
"<a href='" $phpbb_root_path "profile.php?mode=editprofile'>Perfil</a><br />"
por esto:
Código PHP:
    echo '<table><tr><td align="center">' $ruta_de_avatar .'</td>';
    echo 
'<td> Bienvenido <b>' $userdata['username'] . '</b>.<br />';
    echo 
'<a href="'.$phpbb_root_path.'login.'.$phpEx.'?logout=true&redirect='.$volver.'">Logout ['.$userdata['username'].']</a><br />';
    echo 
'<a href="' $phpbb_root_path 'profile.php?mode=editprofile">Perfil</a><br />'
Es que había un par de errores, uno en la primera línea con unas comillas mal cerradas, y otro semi error, culpa mía. Se trata de lo siguiente, aunque no afecta a ese error que te sale a tí.
Cuando añadi esto:
Código PHP:
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']);
   } 
Lo que hice es automatizar la transmisión de la variable de sesión por query string dependiendo de que esten o no activadas las cookies, con lo cual en la tercera línea sobra lo de transmitir $userdata['session_id'] en el link.

Salu2 ;)

Salu2 ;)
__________________
[+]
[+]
  #21 (permalink)  
Antiguo 04/02/2005, 00:21
 
Fecha de Ingreso: febrero-2005
Mensajes: 11
Antigüedad: 19 años, 2 meses
Puntos: 0
Si al final m di cuenta, espero no ser pesado pero aora m sale

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in

en esta linea

Código PHP:
if ( $userdata['user_new_privmsg'] ) 
he buscado k significa este error T_ENCAPSED_AND_WHITESPACE, pero en ningun sitio lo dejan claro, espero m puedan ayudar

A Yoseman y con lo k acabas de decir, si borras $userdata['session_id'], entonces tb se tendria k borrar || isset($HTTP_COOKIE_VARS[$cookiename . '_data']) no¿

Última edición por Shiryu_20; 04/02/2005 a las 00:25
  #22 (permalink)  
Antiguo 04/02/2005, 07:39
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona (spain)
Mensajes: 56
Antigüedad: 19 años, 2 meses
Puntos: 0
Bueno, ya he editado mi anterior mensaje, y el codigo ya funciona, (probado), de esta manera yoseman, no mareamos tanto la gente copiando y pegando de aqui y de alli.

vale, mi siguiente duda es la siguiente:
el codigo presentado por Yoseman funciona! pero creo que yo he sido el unico que quiere añadir en la seccion del foro este codigo. y cual es el resultado? que no funciona como deberia.

para aquellos que anden perdidos, voy a intentar explicarme mejor, imaginaros el foro phpbb, y a la derecha una columna en el qual esta el codigo de yoseman. (dependiendo de las necesidades de cada uno) mostraria en esa columna, el avatar, un enlace al "editar perfil", un enlace "logout", los grupos a los quales pertenece.....

pero al parecer, (yo me imagino) que el codigo del foro phpbb debe machacar el del script, y por ello cuando hacemos login, (en otra seccion fuera que no sea el foro) todo funciona a la perfeccion (evidente).pero si nos dirigimos al foro, veremos que el propio menu del foro phpbb nos muestra como usuarios logueados, pero en la columna, donde se hallaba el script de yoseman, interpreta que no estamos logueados. y no deberia ser asi!!!!!!!!!

es por ello que hago un peticion, sobretodo a yoseman (que veo que controla bastante y ademas es moderador en tomatoma.ws) a ver si se puede realizar un segundo script complementario al 1r o no, que solucione este problema.

os dejo la direccion de mi web personal en donde estoy intentado solucionar este asunto. os he creado un usuario para que hagais login, y por vosotros mismo veais el error.

Url: http://www.bezerik.net
usuario: invitado
contraseña: invitado


espero que me podais ayudar. ya vereis que la web esta echa una mierda, no tiene ni 7 dias
__________________
http://www.bezerik.net
Atención:
- Antes de preguntar lee las FAQ , los Tutoriales, utiliza el Motor de Búsquedas o revisa en Google
- Plantea tus dudas correctamente para que lo demás puedan entenderte. ¿Como hacer preguntas inteligentes?
- Evita colocar títulos como "Ayudaaaa" "Urgenteeeee" porque degradan el motor de búsquedas y resultan desagradables.
  #23 (permalink)  
Antiguo 04/02/2005, 10:41
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
que caña este post esta dando mucho de si, se nota que mucha gente tenia esa duda, la verdad es que es cojonudo implemtentar el loguin de los foros phBB en toda un web.

weeeeeeiii muchas gracias a los que estan prestando tanta ayuda, viene de puta madre.
  #24 (permalink)  
Antiguo 04/02/2005, 11:53
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
tengo un pekeño problemilla, al hacer logout utilizando el sistema de yoseman $volver="rutapaginadesdedondesehacelogout"

al darle a logout para ke me vaya al index me aparece en la direccion del navegador una direccion correcta pero sin las www y la pantalla se queda en blanco, si le doy a ir otra vez no hace nada pero si pulso actualizar todo funciona correctamente, por que me sale esa pagina en blanco y tengo que darle a actualizar???

Un saludo.
  #25 (permalink)  
Antiguo 04/02/2005, 11:58
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
¿En qué directorio está tu foro...?
Sí está en un directorio hijo de dónde está este script tienes que poner $volver="../index.php";

Salu2 ;)
__________________
[+]
[+]
  #26 (permalink)  
Antiguo 04/02/2005, 12:16
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
la ruta correcta es "../../index.php" la cuestion es que creo que no me funciona por que no utilizo exactamente lo que habeis puesto del avatar y todo eso.

donde hago login o logout es en este script:

Código PHP:
<?php $log_in_out=( $userdata['session_logged_in'] ) ? ('<a 

href="'
.$phpbb_root_path.'login.'.$phpEx.'?logout=true&amp;s id=' $userdata['session_id'].'&redirect='.$volver.'" 

class="mainmenu"><img src="/foros/templates/subBlack/images/icon_mini_login.gif" width="12" height="13" border="0" hspace="3" 

/>&nbsp;Logout&nbsp;['
.$userdata['username'].']</a></span>') : ('<a href="'.$phpbb_root_path.'login.'.$phpEx.'" 

class="mainmenu"><img src="/foros/templates/subBlack/images/icon_mini_login.gif" width="12" height="13" border="0" hspace="3" 

/>&nbsp;Login&nbsp;</a>'
);
print 
$log_in_out?>
al comienzo de la web he puesto esto que tu decias:

Código PHP:
<? 
$volver
="../../index.php"
define('IN_PHPBB'true); 
$phpbb_root_path 'foros/'//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); 
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']); 
   }
?>

tal cual lo ves es como lo he puesto.
  #27 (permalink)  
Antiguo 04/02/2005, 12:42
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Si tu directorio para los foros es foros/ y tu script está arriba del directorio de los foros, lo que debes de poner es $volver="../index.php";

Salu2 ;)
__________________
[+]
[+]
  #28 (permalink)  
Antiguo 04/02/2005, 12:47
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
nada tronco pongo ../index.php y me da el mismo resultado que te comente antes, me sale la pantalla en blanco con esta direccion en el navegador http://mindpanic.com/index.php, si le doy a actualizar en esa pantalla en blanco aparece correctamente mi index con esa misma dirección.

que cosa mas rara. ¿por que puede ocurrir esto?
  #29 (permalink)  
Antiguo 04/02/2005, 15:02
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Cita:
Iniciado por Bezerik
Bueno, ya he editado mi anterior mensaje, y el codigo ya funciona, (probado), de esta manera yoseman, no mareamos tanto la gente copiando y pegando de aqui y de alli.

vale, mi siguiente duda es la siguiente:
el codigo presentado por Yoseman funciona! pero creo que yo he sido el unico que quiere añadir en la seccion del foro este codigo. y cual es el resultado? que no funciona como deberia.

para aquellos que anden perdidos, voy a intentar explicarme mejor, imaginaros el foro phpbb, y a la derecha una columna en el qual esta el codigo de yoseman. (dependiendo de las necesidades de cada uno) mostraria en esa columna, el avatar, un enlace al "editar perfil", un enlace "logout", los grupos a los quales pertenece.....

pero al parecer, (yo me imagino) que el codigo del foro phpbb debe machacar el del script, y por ello cuando hacemos login, (en otra seccion fuera que no sea el foro) todo funciona a la perfeccion (evidente).pero si nos dirigimos al foro, veremos que el propio menu del foro phpbb nos muestra como usuarios logueados, pero en la columna, donde se hallaba el script de yoseman, interpreta que no estamos logueados. y no deberia ser asi!!!!!!!!!

es por ello que hago un peticion, sobretodo a yoseman (que veo que controla bastante y ademas es moderador en tomatoma.ws) a ver si se puede realizar un segundo script complementario al 1r o no, que solucione este problema.

os dejo la direccion de mi web personal en donde estoy intentado solucionar este asunto. os he creado un usuario para que hagais login, y por vosotros mismo veais el error.

Url: http://www.bezerik.net
usuario: invitado
contraseña: invitado


espero que me podais ayudar. ya vereis que la web esta echa una mierda, no tiene ni 7 dias
Bueno cómo te decía lo que me desconcierta del asunto es que a tí no te de error de funciones redeclaradas al volver a iniciar sesión phpBB, que es lo que haces al incluir nuestro script en el index.php del foro, no sé por qué sucede esto, pero lo mismo responde a que tengas desactivadas algunas directivas del php.ini que definen si el script continuará con el código al encontrar el error y si mostrará los mensajes de error.

El caso es que eso es lo que parece...

De todas formas se podría probar una cosa. Se trataría de iniciar sesión phpBB sólo en el caso de que no haya sido iniciada previamente. Para ello podemos por ejemplo (para no marearnos mucho) evaluar si existe alguna de las funciones que se definen en el inicio de sesión phpBB, por ejemplo en éste caso usaremos init_userprefs.
Además de esto debemos de definir la variable que contiene la ruta relativa del foro en función de que se esté interpretando desde el foro o desde nuestro scripts. Esto es porque cuando incluimos un script, aunque esté en un directorio distinto del que lo llama, la ruta relativa seguirá siendo en el archivo incluido, la del que lo llama, comprendo que esto es algo lioso. Es decir si incluimos desde el index del foro nuestro script y asignamos "foro/" a $phpbb_root_path cuando creemos nuestros enlaces por ejemplo:
Código PHP:
<form action="<?=$phpbb_root_path?>login.php" method="post">
en realidad estaríamos llamando desde la ruta del foro a foro/login.php
Para eso usaremos una asignación a $phpbb_root_path que dependa de la ruta del script(que cómo hemos visto no es la del archivo incluido sino la del que lo llama)
Bueno entiendo que es un poco lioso, pero quedaría así:
Código PHP:
define('IN_PHPBB'true);
$phpbb_root_path = (dirname($_SERVER['PHP_SELF'])=="/foro") ? './' 'foro/'//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'];

A ver si eso te sirve Bezerik, sino seguiremos probando...
__________________
[+]
[+]
  #30 (permalink)  
Antiguo 04/02/2005, 15:14
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Cita:
Iniciado por MindPaniC
nada tronco pongo ../index.php y me da el mismo resultado que te comente antes, me sale la pantalla en blanco con esta direccion en el navegador http://mindpanic.com/index.php, si le doy a actualizar en esa pantalla en blanco aparece correctamente mi index con esa misma dirección.

que cosa mas rara. ¿por que puede ocurrir esto?
Has mezclado algunas cosillas, si nos pasas el script entero te intentaremos ayudar ;)

Salu2 ;)
__________________
[+]
[+]
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.
Tema Cerrado

SíEste tema le ha gustado a 7 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 12:32.