Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/01/2005, 17:24
Avatar de yoseman
yoseman
 
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
Para lo primero he mejorado un poquillo el código, ahora cuando el usuario está logueado te muestra un link para que desloguee, pero si está deslogueado, lo que hace es mostrar un formulario para que loguee que es más lógico.
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
//
$log_in_out=( $userdata['session_logged_in'] ) ? ('<a href="'.$phpbb_root_path.'login.'.$phpEx.'?logout=true&amp;sid=' $userdata['session_id'].'&redirect=./log.php">LOGOUT  ['.$userdata['username'].']</a>') : ('LOGIN');
?>
<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="./log.php">
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>
<?}?>
Hay una serie de cosas que hay que saber.
Código PHP:
$log_in_out=( $userdata['session_logged_in'] ) ? ('<a href="'.$phpbb_root_path.'login.'.$phpEx.'?logout=true&amp;sid=' $userdata['session_id'].'&redirect=./log.php">LOGOUT  ['.$userdata['username'].']</a>') : ('LOGIN'); 
En está línea se crea el link de deslogueo en el que he añadido una variable que se pasa por query string, en concreto redirect, que ha de contener la ruta a dónde quieres que el script redireccione una vez que el script haya deslogueado al usuario, pero relativa a la ruta de phpBB. Por ejemplo en este caso yo puse redirect=./log.php, porque mi script se llamaba así y estaba en la ruta del foro. Si quieres por ejemplo acceder cuando se desloguea desde tu script al índice de tu web, en el caso de que este un directorio por arriba del de phpBB, tendrías que poner redirect=../index.php. Luego también muy importante que la variable phpbb_root_path esté bien asignada(ruta relativa del foro respecto del script) y recuerda que aunque hagas un include de un archivo(por si quieres automatizar este sistema en toda la web) la ruta sigue siendo la del archivo que lo incluye, eso respecto de localizar bien el href del link.
Con eso controlamos a dónde queremos que vaya nuestro script cuando nos deslogueamos. Sólo agregar que no sé porque al postear el código me separa la variable sid en dos trozos, antes de subir el archivo júntalo.
Bueno y ahora tenemos el asunto de dónde redirecciona nuestro script cuando nos logueamos, eso ya lo tratamos en otro tema:

http://forosdelweb.com/showthread.php?t=261850

Código PHP:
<form action="<?=$phpbb_root_path?>login.php" method="post">
<input type="hidden" name="redirect" value="./log.php?sid=<?=$userdata['session_id']?>">
Esas son las dos líneas importantes del asunto, la primera para localizar el script de login.php de phpBB respecto de la ruta de tu script, y la segunda para determinar la dirección a la que se redireccionará una vez realizado el deslogueo. Esa dirección una vez más ha de ser relativa a la dirección dónde se encuentra phpBB, por ejemplo si tenemos nuestro script en un directorio arriba del foro y nuestro foro en el directorio phpBB2 sería(elijo redireccionar al índice del directorio raíz:
Código PHP:
<?
$phpbb_root_path
="phpBB2/";
<
form action="<?=$phpbb_root_path?>login.php" method="post">
<
input type="hidden" name="redirect" value="../index.php?sid=<?=$userdata['session_id']?>">
Cita:
2- Si por ejemplo me logueo y voy dando un paseo por la web. En caso de que le de a "atras" en la barra de navegacion del explorer, o de que meta una dirección cualquiera de mi web siempre me aparece como si no estuviese logueado. Es muy extraño ya que la session se conseva gracias a tu codigo del principio pero no aparece el [login out] "username". raro raro raro raro raro...
Cuando vas navegando por páginas que son ajenas al foro, tienes que encabezar los scripts con el código que hace que persista la sesión, pero en todos, no sé si lo habrás hecho, pero debería de funcionar.
De todas formas si el navegador del cliente tiene desactivadas las cookies de sesión, no habría forma de propagar el identificador de sesión. Lo que hace phpBB es pasar en ese caso por query string el identificador de sesión asignado a la variable sid.
Cómo último recurso yo probaría lo siguiente, en cuatro o 5 scripts de tu página, pasaría por query string en los links para acceder a cada sección el identificador de sesión ?sid=<?=$userdata['session_id']?>
Por ejemplo un link
<a href="./ebooks.php?sid=<?=$userdata['session_id']?>">
Y así con 4 o 5, navega por esos enlaces y prueba a ver que sucede.

A ver si te sirve, yo tambien voy a probar una duda que me ha surgido, si averiguo algo te cuento.

Salu2 ;)
__________________
[+]
[+]