Recordad que para pedir soporte alguno, debéis facilitar los datos de soporte oportunos por favor, mirad aquí y leer las Normas generales del foro, esto nos servirá de ayuda para dar el mejor soporte..

Gracias.

La Administración de phpBB España.

Cómo poner un login fuera del Foro

Guías, manuales, tutoriales, etc. sobre phpBB2 y otros sistemas.
Foro de lectura, las dudas en el Foro oportuno por favor.
Cerrado

0
No hay votos
 
Votos totales: 0

Avatar de Usuario
ThE KuKa
Administrador
Mensajes: 9055
Registrado: 04 Ene 2004, 19:27
Nombre real: Raúl
Ubicación: Terrassa
Género:
Edad: 45
Contactar:

Cómo poner un login fuera del Foro

#1

Mensaje por ThE KuKa » 04 Jun 2007, 23:25

Autor: t0m|ta
Fecha: 6 de Marzo 2005
Actualizado: 8 de Marzo 2005
Comprobado: phpBB 2.0.13
Nivel: Avanzado
Basado en: Este Articulo y este otro Articulo.

Introducción

Muchos usuarios nos preguntan, cómo poner un login en la index de su página, fuera del foro. Antes había un MOD que permitía hacer eso, ahora es mucho más fácil. Para hacerlo tenemos que:

a) Mantener las sesiones fuera de phpBB
b) Averiguar cual es el avatar del usuario y si tiene mensajes privados
c) Mostrarle sus datos si está logueado o la caja de login si no lo está

a) Cómo mantener al usuario logueado en tu sitio fuera de phpBB

Para mantener al usuario logueado tenemos que inicializar las sesiones de phpBB e incluir algunas funciones necesarias para reconocer al usuario y tener sus datos a mano.

Código: Seleccionar todo

define('IN_PHPBB',true);
$site_root_path = '/home/TUPATH/'; // Absoloute SITE PATH Path
$phpbb_root_path = 'phpBB/';  // Forum Path
$root = '..'; // Root Dir of Site
$privvar = ' /home/TUPATH/phpBB/privmsg.php';
$phpbb_root_path = $site_root_path . $phpbb_root_path;
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.php');
include_once ($phpbb_root_path . 'includes/bbcode.'.$phpEx); 
include_once ($phpbb_root_path . 'includes/functions.'.$phpEx); 
//
// lets make a little check if your root_path is correct ;-)
//
if (!file_exists($phpbb_root_path . 'extension.inc'))
{
	echo $phpbb_root_path;
    die ('<tt><strong>El pach está mal:</strong>
          $phpbb_root_path está mal y no apunta a tu foro.</tt>');
}
//
// now we include (integrate) some files which we need
//
//
//
//
//
// Start session management
//
if (!$userdata)
{
	//
	// Start session management
	//
	$userdata = session_pagestart($user_ip, PAGE_INDEX);
	init_userprefs($userdata);
	//
	// End session management
	//
}
NOTA: El path puede ser relativo, pero años de pegarme con él, me han enseñado que más vale ponerlo completo si no quieres volverte completamente loco.

b) Averiguar cual es el avatar del usuario y si tiene mensajes privados

Si nuestro usuario está logueado vamos a saludarlo con su nombre y su avatar y decirle si tiene algún mensaje. ASí que lo primero que tenemos que averiguar es cuál es su avatar y si tiene mensajes, para eso utilizamos este código, que ponemos inmediatamente después de:

Código: Seleccionar todo

	// End session management
	//
}
El código para saber el avatar y si tiene mensajes privados

Código: Seleccionar todo

$avatar = ''; 
if ( $userdata['user_avatar_type'] && $userdata['username'] != ANONYMOUS && $userdata['user_allowavatar'] ) 
{ 
switch( $userdata['user_avatar_type'] ) 
{ 
case USER_AVATAR_UPLOAD: 
$avatar = ( $board_config['allow_avatar_upload'] ) ? '<img src="foros/' . $board_config['avatar_path'] . '/' . $userdata['user_avatar'] . '" alt="" border="0" />' : ''; 
break; 
case USER_AVATAR_REMOTE: 
$avatar = ( $board_config['allow_avatar_remote'] ) ? '<img src="' . $userdata['user_avatar'] . '" alt="" border="0" />' : ''; 
break; 
case USER_AVATAR_GALLERY: 
$avatar = ( $board_config['allow_avatar_local'] ) ? '<img src="foros/' . $board_config['avatar_gallery_path'] . '/' . $userdata['user_avatar'] . '" alt="" border="0" />' : ''; 
break; 
} 
} 

if ( $userdata['user_new_privmsg'] )//private messages
   {
      $l_message_new = ( $userdata['user_new_privmsg'] == 1 ) ? $lang['New_pm'] : $lang['New_pms'];
      $l_privmsgs_text = sprintf($l_message_new, $userdata['user_new_privmsg']);

      if ( $userdata['user_last_privmsg'] > $userdata['user_lastvisit'] )
      {
         $sql = "UPDATE " . USERS_TABLE . "
            SET user_last_privmsg = " . $userdata['user_lastvisit'] . "
            WHERE user_id = " . $userdata['user_id'];
         if ( !$db->sql_query($sql) )
         {
            message_die(GENERAL_ERROR, 'Could not update private message new/read time for user', '', __LINE__, __FILE__, $sql);
         }

         $s_privmsg_new = 1;
         $icon_pm = $images['pm_new_msg'];
      }
      else
      {
         $s_privmsg_new = 0;
         $icon_pm = $images['pm_no_new_msg'];
      }
   }
   else
   {
      $l_privmsgs_text = $lang['No_new_pm'];

      $s_privmsg_new = 0;
      $icon_pm = $images['pm_no_new_msg'];
   }

   if ( $userdata['user_unread_privmsg'] )
   {
      $l_message_unread = ( $userdata['user_unread_privmsg'] == 1 ) ? $lang['Unread_pm'] : $lang['Unread_pms'];
      $l_privmsgs_text_unread = sprintf($l_message_unread, $userdata['user_unread_privmsg']);
   }
   else
   {
      $l_privmsgs_text_unread = $lang['No_unread_pm'];
   }
Ahora veamos cómo mostrar cosas diferentes si el usuario está logueado y si no lo está:

NOTA: Sustituye www.TUDOMINIO.COM/phpBB/ por la URL real de tu foro
Sustituye ../TUPAGINA.php por el path y el nombre reales de la página dónde estás haciendo el login.

Código: Seleccionar todo

if ($userdata['session_logged_in']) {
								echo "<h2> Hola ".$userdata['username'] ." </h2>\n";
								echo $avatar;?>
								<ul>
								<li><a href="http://www.TUDOMINIO.COM/phpBB/profile.php?mode=editprofile" title="modifica tu perfil">Modifica tu perfil</a> </li>
								 <li><a href="http://www.TUDOMINIO.COM/phpBB/privmsg.php?folder=inbox" title="mensajes"><?php echo $l_privmsgs_text ?></a></li>
								  <li><a href="http://www.TUDOMINIO.COM/phpBB/login.php?logout=true&sid=<? print $userdata['session_id']; ?>&redirect=../TUPAGINA.php&outside=1" class="out" title="salir">SALIR</a></li>

								

								<?php
									} else {
								?>
							<h2>Entrar</h2>
								<form action="http://www.TUDOMINIO.COM/phpBB/login.php" method="post">
								<input type="text" name="username"  size="17" maxlength="40" value=""><br />
								<input type="password" name="password"  size="17" maxlength="32"  ><br />
								    <input type="checkbox" name="autologin" value="ON" /> Autologin     
									<input type="hidden" name="redirect" value="../TUPAGINA.php">
									<ul>
								 <li class="nuestros"><a href="http://www.TUDOMINIO.COM/phpBB/profile.php?mode=register" title="Léete las condiciones y decide si quieres pertenecer a esta comunidad.">Soy nuevo</a></li>
								 <li class="nuestros"> <a href="http://www.TUDOMINIO.COM/phpBB/profile.php?mode=sendpassword" title="¿Un despiste? Danos tu nombre de usuario y tu correo electr&oacute;nico y te mandamos una nueva">Recordar contraseña</a></li></ul>
								<input type="submit" value=" Entrar " name="login">
								</form>
								<?php }
Tema original en tomatoma.WS


Raul [ThE KuKa] en phpBB
Jr. Extension Validator - Jr. Styles Validator - Style Customisations - Translator - International Support Team


Enlace:
BBCode:
HTML:

Ocultar enlaces al mensaje
Mostrar enlaces al mensaje

Cerrado

Volver a “Guías, manuales, tutoriales, ayuda, sobre phpBB 2 y otros”