Página 1 de 1

Añadir datos a login externo

Publicado: 18 Ago 2010, 20:53
por hiroshima5
URL: www.yetsii.es
Versión phpBB: phpBB3 (3.0.7-PL1)
MODs Instalados: Ninguno
Plantilla(s) usada(s): Prosilver
Servidor: Linux
Actualización desde otra versión: No
Conversión desde otro sistema de foros: No

Primero un saludo a todo el foro ya que acabo de registrame en el despues de mucho tiempo siguiendoos y aprendiendo lo que se puede.

Bien, el tema esta en que quiero hacer un login externo para el foro, siguiendo algunos manuales (gracias a los creadores) y entre unas cosas y otras he hecho estos dos script en php

sesiones.php

Código: Seleccionar todo

<?php 
 
define('IN_PHPBB', true); // se define que se va a usar phpbb. 
$phpbb_root_path = 'URL PATH'; // el path directo del servidor a phpbb3, varia algo dependiendo del servidor, si hay errores con esto en el mismo error sale el path correcto. 
$phpbb_url_path = 'URL PHPBB3'; // la url hacia tu phpbb3 
$phpEx = substr(strrchr(__FILE__, '.'), 1); // tipo de extension 
include($phpbb_root_path . 'common.' . $phpEx); // incluimos el common.php que es muy importante para la bd 
include($phpbb_root_path . 'config.' . $phpEx); //include de config.php  importante tambien en bd usuarios  y pass
 
// iniciamos sesion 
$user->session_begin(); 
$auth->acl($user->data); 
 ?> 
y login.php

Código: Seleccionar todo

<?php include("sesiones.php"); 
if($user->data['is_registered']) 
{ 
//en phpbb3_ suponemos que el prefijo de la tabla es phpbb3_ 

$conexion = mysql_connect($dbhost, $dbuser, $dbpasswd); mysql_select_db($dbuser);
unset($dbpasswd);
$avvy = "SELECT * FROM phpbb_users WHERE user_id =" . $user->data['user_id']; 
$result = mysql_query($avvy) or die (mysql_error()); 


 
while($row = mysql_fetch_array($result)) 
{ 
$link = $row['user_avatar']; 
$width = $row['user_avatar_width']; 
$height = $row['user_avatar_height']; 

mysql_close($conexion);
}?> 
<a href="<?php echo $phpbb_url_path?>memberlist.php?mode=viewprofile&u=<?php echo $user->data['user_id'];?> " target="_self"></a> 
 
 
<table width="145" height="392" border="0" cellpadding="0" cellspacing="0" > 
  <tr> 
    <td align="center" valign="top"> 
        <table width="145" border="0" cellspacing="0" cellpadding="0"> 
          <tr> 
            <td align="center">Bienvenido <?php echo $user->data['username'];?>
			<META HTTP-EQUIV="Refresh" CONTENT="2; URL=URL INDEX.PHP">
			</td> 
          </tr> 
        </table> 
      
        
        
	</td> 
  </tr> 
</table> 
 
 
 
<?php 
} else { 
 ?> 
 <form action="<?php echo $phpbb_url_path?>ucp.php?mode=login" target="_top" method="post" enctype="multipart/form-data"> 
 
 <table border="0" cellpadding="0" cellspacing="2"> 
 
  <tr align="center"> 
    <td> 
      Usuario: 
      <input name="username" type="text" maxlenght="50" value="" /> 
    </td>
    <td>
	  Contrase&ntilde;a:
      <input type="password" name="password" maxlength="32"  > 
    </td>
	<td>
	  
      <input type="submit" value=" Entrar " name="login" > 
	</td>
    <td>	
      <input type="checkbox" name="autologin" id="autologin" class="checkbox" value="ON"/>Autologin 
      <input type="hidden" name="redirect" value="../index.php"> 
    </td>
	<td>
      <a href="<?php echo $phpbb_url_path?>ucp.php?mode=register" title="Lꦴe las condiciones y decide si quieres pertenecer a esta comunidad." >Soy nuevo</a>
	  &nbsp;
	  <a href="<?php echo $phpbb_url_path?>ucp.php?mode=sendpassword" title="Danos tu nombre de usuario y tu correo electr&oacute;nico y te mandamos una nueva" >Recordar password </a>
	</td>
	
 
        
	</td> 
  </tr> 
</table> 
 </form>
 
 
 
<?php } 
 
?> 
Bien mi duda es como podría poner la fecha de la ultima visita del usuario una vez que se loguee, lo he intentado de mil maneras pero debe ser por el lang que no soy capaz de dar con la tecla para que funcione la función formatdate que viene en /includes/functions.php, a ver si alguien que entienda algo de php me echa un cable.

Otra duda, en login.php he tenido que hacer otra conexión con la base de datos pero no se supone que ya hay una conexión anterior hecha desde common.php?? ¿no habría manera de usar esa misma conexión directamente?

Un saludo y gracias

Re: Añadir datos a login externo

Publicado: 18 Ago 2010, 20:59
por leviatan21
La variable para la última fecha es :

Código: Seleccionar todo

    // Last visit date/time
    $s_last_visit = ($user->data['user_id'] != ANONYMOUS) ? $user->format_date($user->data['session_last_visit']) : '';
 
Y para mostrarlo con el idioma debes hacer algo como :

Código: Seleccionar todo

<?php echo sprintf($user->lang['YOU_LAST_VISIT'], $s_last_visit);?>

Re: Añadir datos a login externo

Publicado: 18 Ago 2010, 21:08
por hiroshima5
No me aparece nada, tengo que haber cargado antes los archivos de idioma no? como los cargo?

Re: Añadir datos a login externo

Publicado: 18 Ago 2010, 21:25
por leviatan21
hiroshima5 escribió:No me aparece nada, tengo que haber cargado antes los archivos de idioma no? como los cargo?
Si debes inicializar algunas cosas referentes al usuario:
Luego de :

Código: Seleccionar todo

$auth->acl($user->data); 
Agrega :

Código: Seleccionar todo

$user->setup(); 

Re: Añadir datos a login externo

Publicado: 18 Ago 2010, 21:39
por hiroshima5
perfecto, ya funciona!! agregue para el que le pudiera interesar en login.php

Código: Seleccionar todo

$s_last_visit = ($user->data['user_id'] != ANONYMOUS) ? $user->format_date($user->data['session_last_visit']) : '';
lang['YOU_LAST_VISIT'], $s_last_visit);?>
Aunque hay un problema con la codificación ya que sale

Su última visita fue: Mié Ago 18, 2010 7:27 pm

¿Tiene arreglo?

y ya que estamos podria ponerse tambien si hay mensajes privados nuevos? digamos algo así

Mensajes (2/26)

Gracias de nuevo leviatan estas hecho un crack

Re: Añadir datos a login externo

Publicado: 18 Ago 2010, 21:59
por leviatan21
hiroshima5 escribió: Aunque hay un problema con la codificación ya que sale

Su última visita fue: Mié Ago 18, 2010 7:27 pm
Eso depende de tu código html inicial, debería ser algo como :
hiroshima5 escribió:y ya que estamos podria ponerse tambien si hay mensajes privados nuevos? digamos algo así

Mensajes (2/26)

Gracias de nuevo leviatan estas hecho un crack
La información de Mensajes privados depende de este código :

Código: Seleccionar todo

    $l_privmsgs_text = $l_privmsgs_text_unread = '';
    $s_privmsg_new = false;

    // Obtain number of new private messages if user is logged in
    if (!empty($user->data['is_registered']))
    {
        if ($user->data['user_new_privmsg'])
        {
            $l_message_new = ($user->data['user_new_privmsg'] == 1) ? $user->lang['NEW_PM'] : $user->lang['NEW_PMS'];
            $l_privmsgs_text = sprintf($l_message_new, $user->data['user_new_privmsg']);

            if (!$user->data['user_last_privmsg'] || $user->data['user_last_privmsg'] > $user->data['session_last_visit'])
            {
                $sql = 'UPDATE ' . USERS_TABLE . '
                    SET user_last_privmsg = ' . $user->data['session_last_visit'] . '
                    WHERE user_id = ' . $user->data['user_id'];
                $db->sql_query($sql);

                $s_privmsg_new = true;
            }
            else
            {
                $s_privmsg_new = false;
            }
        }
        else
        {
            $l_privmsgs_text = $user->lang['NO_NEW_PM'];
            $s_privmsg_new = false;
        }

        $l_privmsgs_text_unread = '';

        if ($user->data['user_unread_privmsg'] && $user->data['user_unread_privmsg'] != $user->data['user_new_privmsg'])
        {
            $l_message_unread = ($user->data['user_unread_privmsg'] == 1) ? $user->lang['UNREAD_PM'] : $user->lang['UNREAD_PMS'];
            $l_privmsgs_text_unread = sprintf($l_message_unread, $user->data['user_unread_privmsg']);
        }
    } 
Para mostrar esa información la variable que la contiene es $l_privmsgs_text

Código: Seleccionar todo

echo $l_privmsgs_text;?>