Pagina 1 van 1

Who is online op index website probleem

Geplaatst: 22 aug 2004, 15:16
door Purmerend
Ik heb een website welke niet op een portal systeem draaid.
Maar wou toch op de index een blokje maken waar mensen konden zien wie er online is.

Nu heb ik van phpbbhacks een script gedownload maar heb daar een paar probleempjes mee.

Hier de code,

Code: Selecteer alles

<?php
define('IN_PHPBB', true);

$phpbb_root_path = "forum/"; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

@$userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length); 
@init_userprefs($userdata); 

$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 ) . "
           ORDER BY u.username ASC, s.session_ip ASC"; 
$result = $db->sql_query($sql); 
if(!$result) 
{ 
   message_die(GENERAL_ERROR, "Couldn't obtain user/online information.", "", __LINE__, __FILE__, $sql); 
} 

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

$logged_visible_online = 0; 
$logged_hidden_online = 0; 
$guests_online = 0; 
$online_userlist = ""; 

$prev_user_id = 0; 
$prev_session_ip = 0; 

while( $row = $db->sql_fetchrow($result) ) 
{ 
        if( $row['session_logged_in'] ) 
        { 
                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&" . 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&" . 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; 
                        } 
                } 
        } 
        else 
        { 
                if( $row['session_ip'] != $prev_session_ip )
                {
                        $guests_online++; 
                }  
        } 

        $prev_user_id = $row['user_id']; 
        $prev_session_ip = $row['session_ip']; 
} 

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 == 0 ) 
{ 
        $l_t_user_s = $lang['Online_users_zero_total']; 
} 
else if( $total_online_users == 1 ) 
{ 
        $l_t_user_s = $lang['Online_user_total']; 
} 
else 
{ 
        $l_t_user_s = $lang['Online_users_total']; 
} 

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

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

if( $guests_online == 0 ) 
{ 
        $l_g_user_s = $lang['Guest_users_zero_total']; 
} 
else if( $guests_online == 1 ) 
{ 
        $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); // all users
$l_online_users .= sprintf($l_r_user_s, $logged_visible_online); // visible users
$l_online_users .= sprintf($l_h_user_s, $logged_hidden_online); // hidden users
$l_online_users .= sprintf($l_g_user_s, $guests_online);  // guests

$onlinet="$l_online_users<br>$online_userlist<br>"; 
// echo $onlinet;
//echo ("<b>In&nbsp;Totaal :&nbsp;");
//echo $total_online_users; 
//echo ("<br>Geregistreerd :&nbsp;");
//echo $logged_visible_online;
//echo ("<br>Verborgen :&nbsp;");
//echo $logged_hidden_online;
//echo ("<br>Gasten :&nbsp;");
//echo $guests_online;
//echo ("<br></b>");
//echo ($online_userlist);
echo ('<font size="2">Er&nbsp;zijn&nbsp;<strong>');
echo $total_online_users;
echo ('</strong>&nbsp;gebruikers&nbsp;online<br><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
echo $guests_online;
echo ('</strong>&nbsp;Gasten,<br><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
echo $logged_hidden_online;
echo ('</strong>&nbsp;Verborgen,<br><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
echo $logged_visible_online;
echo ('</strong>&nbsp;Leden :<br>');
echo ($online_userlist);

?>
De code is eigenlijk al veel te groot aangezien ik helemaal niet met de $lang wil werken maar gewoon alleen de getallen en online namen.

Maar dit werkte niet omdat deze code nu alleen weergeeft wie er op de indez zit en in het forum. dus kan ik het opsplitsen? een deel bijvoorbeeld in mijn topframe welke dus op elke pagina is te zien, en dan het echo gedeelte in de index van de site?

Het volgende probleem is dat als iemand nu op de site komt en vervolgens weer vertrekt zonder de forum berichten te lezen worden deze volgende keer niet meer als ongelezen aangemerkt.

bijvoorbaat dank, Marcel