Ver Mensaje Individual
  #36 (permalink)  
Antiguo 09/02/2005, 05:58
Bezerik
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona (spain)
Mensajes: 56
Antigüedad: 19 años, 10 meses
Puntos: 0
Hola!!!

al final lo conseguimos, para aquellos que les interese este asunto, anunciarles que hemos encontrado la solicion, hablo en plural, porque yoseman y yo contactamos via messenger y conseguimos solucionar el problema.

agregar el sistema de validacion (usario si/no logueado) en la misma seccion del foro es posible.

a continuacion explico como conseguirlo de manera poco detallada, ya que asumo que la mayoria tenemos los minimos conocimientos en php para realizar las siguientes opreaciones::

1. debemos agregar en el archivo index.php el script-yoseman antes de que el archivo incluya el page_header. ( recomiendo crear un archivo PHP a parte), en donde se encuentre "nuestra estructura y estilo de la web" a mas a mas del script de yoseman. a continuacion os repito el script, para que lo tengais mas a mano.
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'];

llegados a este punto, debemos reflexionar sobre nuestra estructura,. (tipo portal)
si optamos por crear una columna a la derecha que contendra el MENU, en este caso es tal y como yo decidi hacerlo ,os quedara a la izquierda todo el CONTENIDO. como por ejemplo http://www.bezerik.net/foro , como todoss dominamos HTML, sabemos que la estructura bàsica de la tabla será:
Código HTML:
<table border="1">
<tr>
<td width="100%"> CONTENIDO </td><td width="200"> MENU </td>
</tr>
</table> 
en este supuesto caso, en index.php (archivo del foro phpbb), antes que se incluya el page_header.php (suguiero buscar por la palabra clave "page_header", ya que el archivo es largo). incluiremos nuestra estructura que si recordais esta en un archivo PHP a parte, por ejemplo llamado "cabeza.php"
Código PHP:
include ("cabeza.php")  // tened en cuentra donde se encuentra este archivo 
y cabeza.php contendria:
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'];
}
?>
<!-- inicio estructura web -->
<table border="1">
<tr>
<td width="100%">
<!-- empieza contenido -->
por ultimo, solo faltara añadir las condiciones: si esta logueado mostrar su avatar, su perfil, si tiene mensajes privados....., si NO esta logueado mostrar enlace de registrarse, de recordar contraseña..... (por ejemplo).

buscamos en el archivo index.php, la palabra clave "page_tail", se encuentra casi al final del archivo. aqui amigos lectores , se me presento un gran problema, si seguia con la misma idea general, nosotros incluiriamos otro archivo PHP a parte, despues del page_tail.php, por ejemplo llamado "pie.php" con la siguiente orden.
Código PHP:
include ("pie.php")  // tened en cuentra donde se encuentra este archivo 
y pie.php deberia contener el siguiente codigo:
Código PHP:
 </td>
<td width="200">
<!-- inicio menu -->
<?
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
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

    // pritamos los menus.....
    
echo "Bienvenido <b>" $userdata['username'] . "</b>.<br />";
    echo 
"<center>" $ruta_de_avatar ."<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 />";
    echo 
"<a href='" $phpbb_root_path "privmsg.php?folder=inbox'>" $l_privmsgs_text "</a><br /><br />";
    
// fin usuario SI logeado 
}  else { 
   echo 
"<a href='" $phpbb_root_path "profile.php?mode=register'>Registro</a>";
//fin usario NO logueado
?>
<!-- fin menu -->
</td>
</tr>
</table>
pero al probar esto, me lleve una gran sorpresa, al ejecutarlo en el navegador, pude comprobar que no cargaba, no añadia el "pie.php".

Tras varias horas "rallandome por el asunto", descubri que al final del archivo page_tail.php que se encuentra en la carpeta include del foro phpbb, havia la orden exit();. http://es.php.net/manual/es/function.exit.php

si leeis ese enlace habreis visto la funcion de exit(). tras eliminar el exit() del page_tail, pude comrpobar que si añadia mi codigo. pero no matenia la session. (MUY RARO RARO RARO.........), pero Yoseman se percato que phpbb utiliza buffers y todo esa gran asunto que a mi me suena a xino, que a vosotros.

asi que, una de dos,
1 - añadais el pie.php directamente en index.php y funcionara!!!
2 - añadais la columna MENU a la izquierda, y a la derecha os queda el CONTENIDO, seguro que no os dara problemas, porque solo deberiais crear un archivo PHP a parte, que por ejemplo tendria la siguiente sintaxi:

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'];

?>
<!-- inico web -->
<table>
<tr>
<td width ="200">
<!-- inicio MENU -->
<?
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
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

    // pritamos los menus.....
    
echo "Bienvenido <b>" $userdata['username'] . "</b>.<br />";
    echo 
"<center>" $ruta_de_avatar ."<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 />";
    echo 
"<a href='" $phpbb_root_path "privmsg.php?folder=inbox'>" $l_privmsgs_text "</a><br /><br />";
    
// fin usuario SI logeado
}  else {
   echo 
"<a href='" $phpbb_root_path "profile.php?mode=register'>Registro</a>";
//fin usario NO logueado
?> 
<!-- fin MENU -->
</td><td width="100%">
<!-- inicio CONTENIDO -->
y en despues del page_tail os acordais de añadir el fin de la tabla
Código PHP:
echo "</td></tr></table>"
Quiero agradecer su gran Ayuda a Yoseman y sobretodo, deciros que lo unico que pretendo con este post es informar y ayudar a los demas usuarios a traves de mi experiencia.

espero que algun lector, se mucho mas experimentado que yo y encuentre alguna solución!!!

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.