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

Usuarios en Línea basados en el Foro

Estas en el tema de Usuarios en Línea basados en el Foro en el foro de Sistemas de gestión de contenidos en Foros del Web. Buenas, tenía una duda que me está trayendo bastante dolor de cabeza... Tengo una web en PHP Puro y un foro phpBB Me gustaria saber ...
  #1 (permalink)  
Antiguo 07/08/2005, 17:11
(Desactivado)
 
Fecha de Ingreso: julio-2005
Mensajes: 6
Antigüedad: 18 años, 9 meses
Puntos: 0
Exclamación Usuarios en Línea basados en el Foro

Buenas, tenía una duda que me está trayendo bastante dolor de cabeza...

Tengo una web en PHP Puro y un foro phpBB

Me gustaria saber como poder mostrar los usuarios/invitados que hay en línea (y mostrar quienes son los registrados) en la página principal de la web, exactamente igual que como se muestran en el foro

Espero respuesta. Gracias de antemano


Saludos
  #2 (permalink)  
Antiguo 08/08/2005, 00:25
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
... alguna vez hice un script que hacia eso de mostrar los usuarios/invitados en línea:
http://www.forosdelweb.com/showpost....1&postcount=20
pero su funcionamiento/planteamiento es independiente... ¿entiendo tú quieres "extraer" esa función de phpBB?; no tengo ni idea de cómo trabaje ese sistema pero si entiendes lo que dejo y te metes a ver cómo funciona phpBB podrías adaptarlo... pero quizá trabajes demás, muy probablemente exista algún script para aplicar ese módulo. Quizá en el foro de Aplicaciones Prefabricadas te podrán decir algo.

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 08/08/2005, 06:57
(Desactivado)
 
Fecha de Ingreso: julio-2005
Mensajes: 6
Antigüedad: 18 años, 9 meses
Puntos: 0
Muchas gracias, aún he de leermelo y como dijistes, investigar el phpBB.

Si te suena aún más, y sabes lo que son los SSI.php de algunos scripts, por ahí va la cosa.

Venga, gracias de nuevo y Saludos !
  #4 (permalink)  
Antiguo 09/08/2005, 22:29
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Movido a el foro de Aplicaciones Prefabricadas esperando puedan darte mayor información.

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 10/08/2005, 10:42
Avatar de Zensuke  
Fecha de Ingreso: agosto-2005
Ubicación: Mexico, cancun.
Mensajes: 31
Antigüedad: 18 años, 9 meses
Puntos: 0
Aqui te dejo el script que yo uso, haber si es lo que buscas:

Código PHP:
<?php
//
// Start session management
//

//


$total_users get_db_stat('usercount');
$newest_userdata get_db_stat('newestuser');
$newest_user $newest_userdata['username'];
$newest_uid $newest_userdata['user_id'];


if( 
$total_users == )
{
    
$l_total_user_s $lang['Registered_users_zero_total'];
}
else if( 
$total_users == )
{
    
$l_total_user_s $lang['Registered_user_total'];
}
else
{
    
$l_total_user_s $lang['Registered_users_total'];
}

    
$db->sql_freeresult($result);

//
// Start output of page
//
define('SHOW_ONLINE'true);
$page_title $lang['Index'];

if ( !
defined('IN_PHPBB') )
{
    die(
"Hacking attempt");
}

define('HEADER_INC'TRUE);


//
// Get basic (usernames + totals) online
// situation
//
$logged_visible_online 0;
$logged_hidden_online 0;
$guests_online 0;
$online_userlist '';
$l_online_users '';

if (
defined('SHOW_ONLINE'))
{

    
$user_forum_sql = ( !empty($forum_id) ) ? "AND s.session_page = " intval($forum_id) : '';
    
$sql "SELECT u.username, u.user_id, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_ip
        FROM "
.USERS_TABLE." u, ".SESSIONS_TABLE." s
        WHERE u.user_id = s.session_user_id
            AND s.session_time >= "
.( time() - 300 ) . "
            $user_forum_sql
        ORDER BY u.username ASC, s.session_ip ASC"
;
    if( !(
$result $db->sql_query($sql)) )
    {
        
message_die(GENERAL_ERROR'Could not obtain user/online information'''__LINE____FILE__$sql);
    }

    
$userlist_ary = array();
    
$userlist_visible = array();

    
$prev_user_id 0;
    
$prev_user_ip $prev_session_ip '';

    while( 
$row $db->sql_fetchrow($result) )
    {
        
// User is logged in and therefor not a guest
        
if ( $row['session_logged_in'] )
        {
            
// Skip multiple sessions for one user
            
if ( $row['user_id'] != $prev_user_id )
            {
                
$style_color '';
                if ( 
$row['user_level'] == ADMIN )
                {
                    
$row['username'] = '<b>' $row['username'] . '</b>';
                    
$style_color 'style="color:#' $theme['fontcolor3'] . '"';
                }
                else if ( 
$row['user_level'] == MOD )
                {
                    
$row['username'] = '<b>' $row['username'] . '</b>';
                    
$style_color 'style="color:#' $theme['fontcolor2'] . '"';
                }

                if ( 
$row['user_allow_viewonline'] )
                {
                    
$user_online_link '<a href="' append_sid("../".$phpbb_root_path."profile.$phpEx?mode=viewprofile&amp;" POST_USERS_URL "=" $row['user_id']) . '"' $style_color .'>' $row['username'] . '</a>';
                    
$logged_visible_online++;
                }
                else
                {
                    
$user_online_link '<a href="' append_sid("../".$phpbb_root_path."profile.$phpEx?mode=viewprofile&amp;" POST_USERS_URL "=" $row['user_id']) . '"' $style_color .'><i>' $row['username'] . '</i></a>';
                    
$logged_hidden_online++;
                }

                if ( 
$row['user_allow_viewonline'] || $userdata['user_level'] == ADMIN )
                {
                    
$online_userlist .= ( $online_userlist != '' ) ? ', ' $user_online_link $user_online_link;
                }
            }

            
$prev_user_id $row['user_id'];
        }
        else
        {
            
// Skip multiple sessions for one user
            
if ( $row['session_ip'] != $prev_session_ip )
            {
                
$guests_online++;
            }
        }

        
$prev_session_ip $row['session_ip'];
    }
    
$db->sql_freeresult($result);

    if ( empty(
$online_userlist) )
    {
        
$online_userlist $lang['None'];
    }
    
$online_userlist = ( ( isset($forum_id) ) ? $lang['Browsing_forum'] : $lang['Registered_users'] ) . ' ' $online_userlist;

    
$total_online_users $logged_visible_online $logged_hidden_online $guests_online;

    if ( 
$total_online_users $board_config['record_online_users'])
    {
        
$board_config['record_online_users'] = $total_online_users;
        
$board_config['record_online_date'] = time();

        
$sql "UPDATE " CONFIG_TABLE "
            SET config_value = '$total_online_users'
            WHERE config_name = 'record_online_users'"
;
        if ( !
$db->sql_query($sql) )
        {
            
message_die(GENERAL_ERROR'Could not update online user record (nr of users)'''__LINE____FILE__$sql);
        }

        
$sql "UPDATE " CONFIG_TABLE "
            SET config_value = '" 
$board_config['record_online_date'] . "'
            WHERE config_name = 'record_online_date'"
;
        if ( !
$db->sql_query($sql) )
        {
            
message_die(GENERAL_ERROR'Could not update online user record (date)'''__LINE____FILE__$sql);
        }
    }

    if ( 
$total_online_users == )
    {
        
$l_t_user_s $lang['Online_users_zero_total'];
    }
    else if ( 
$total_online_users == )
    {
        
$l_t_user_s $lang['Online_user_total'];
    }
    else
    {
        
$l_t_user_s $lang['Online_users_total'];
    }

    if ( 
$logged_visible_online == )
    {
        
$l_r_user_s $lang['Reg_users_zero_total'];
    }
    else if ( 
$logged_visible_online == )
    {
        
$l_r_user_s $lang['Reg_user_total'];
    }
    else
    {
        
$l_r_user_s $lang['Reg_users_total'];
    }

    if ( 
$logged_hidden_online == )
    {
        
$l_h_user_s $lang['Hidden_users_zero_total'];
    }
    else if ( 
$logged_hidden_online == )
    {
        
$l_h_user_s $lang['Hidden_user_total'];
    }
    else
    {
        
$l_h_user_s $lang['Hidden_users_total'];
    }

    if ( 
$guests_online == )
    {
        
$l_g_user_s $lang['Guest_users_zero_total'];
    }
    else if ( 
$guests_online == )
    {
        
$l_g_user_s $lang['Guest_user_total'];
    }
    else
    {
        
$l_g_user_s $lang['Guest_users_total'];
    }

    
$l_online_users sprintf($l_t_user_s$total_online_users);
    
$l_online_users .= sprintf($l_r_user_s$logged_visible_online);
    
$l_online_users .= sprintf($l_h_user_s$logged_hidden_online);
    
$l_online_users .= sprintf($l_g_user_s$guests_online);
}
//Muestra los usuarios que estan conectados en el foro

    
$TOTAL_USERS sprintf($l_total_user_s$total_users);
    
$NEWEST_USER sprintf($lang['Newest_user'], '<a href="' append_sid("../".$phpbb_root_path."profile.$phpEx?mode=viewprofile&amp;" POST_USERS_URL "=$newest_uid") . '">'$newest_user'</a>'); 
    
$CURRENT_TIME sprintf($lang['Current_time'], create_date($board_config['default_dateformat'], time(), $board_config['board_timezone']));
    
$TOTAL_USERS_ONLINE $l_online_users;
    
$LOGGED_IN_USER_LIST $online_userlist;
?>    

  <table align="center" border="0" cellpadding="0" cellspacing="0" style="FONT-SIZE: 10px; COLOR: #333333; FONT-FAMILY: Tahoma; BORDER-COLLAPSE: collapse" width="480"  height="19">
    <tr>
<td class="alt5"  width="5">
  </td>
<td  width="470" class="alt5"  >
<?=$NEWEST_USER;?>     <br />           
            <?=$TOTAL_USERS;?><br />           
           <?=$TOTAL_USERS_ONLINE;?> <br />           
      <?=$LOGGED_IN_USER_LIST;?></td>
    </tr>
</table>
Saludos.
  #6 (permalink)  
Antiguo 12/08/2005, 03:29
(Desactivado)
 
Fecha de Ingreso: julio-2005
Mensajes: 6
Antigüedad: 18 años, 9 meses
Puntos: 0
Buenas a todos de nuevo.

Respecto a Zensuke, ÉSE era el script que buscaba, muchas gracias.

Pero me da este error. No tengo mucha idea a que puede ser debido:

Fatal error: Call to undefined function: get_db_stat() in /home/gtaultim/public_html/index.php on line 173

Agradeceria que me lo solucionases

De nuevo gracias y Saludos
  #7 (permalink)  
Antiguo 12/08/2005, 07:02
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 5 meses
Puntos: 5
Ése error es debido a que debes de iniciar sesión phpBB para poder incluir cualquier función propia de phpBB ( get_db_stat() y otras tantas funciones y constantes predefinidas que se usan en ése código son propias de phpBB )
Además, te en cuenta que no te has conectado a ninguna base de datos, eso así tal cual no podía funcionar, porque phpBB registra sus variables de sesión en la base de datos, no usa el sistema propio de sesiones de PHP.

Para que te funcione, basta con que pongas delante de ése código, lo siguiente:
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
// 
Salu2 ;)
__________________
[+]
[+]

Última edición por yoseman; 12/08/2005 a las 07:07
  #8 (permalink)  
Antiguo 13/08/2005, 10:47
Avatar de Zensuke  
Fecha de Ingreso: agosto-2005
Ubicación: Mexico, cancun.
Mensajes: 31
Antigüedad: 18 años, 9 meses
Puntos: 0
jeje lo puse tomando en cuenta que ya tenias conectada tu web con phpbb ^^U
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:47.