Seite 1 von 1

Who´s online on any other Page Mod > Benutzerzahl schwank

Verfasst: 28.02.2004 13:30
von WWW-Schizo
Hallo,

ich habe Probleme mit diesem Hack von Acid:

## Mod Title: Who's online on any other page
## Filename: online.php
## Mod Version: 1.0.0
## Author: Acid <acid_junky@web.de> , Germany, Berlin

Die Anzahl der Benutzer schwankt sehr stark in dem Mod, beim ersten Reload werden 54 Members und 50 Gäste angezeigt und beim 2. Reload 4 Members und 2 Gäste.

Irgendwas ist da faul...... die Anzeige stimmt auch nicht mit der Who´s online Benutzerzahl in der Forumanzeige überein.

Verfasst: 28.02.2004 15:01
von WWW-Schizo
So ich hab mir das nochmal genau angeschaut:

normale Anzeige im Forum: Insgesamt sind 28 Benutzer online: 6 registrierte, 2 versteckte und 20 Gäste.

zur gleichen Zeit wird auf /forum/online.php außerhalb des phpBB folgendes angezeigt:

Es sind zur Zeit 0 Members und kein Gast online
oder
Es sind zur Zeit 2 Members und kein Gast online

wenn ich nun das Forum reloade und reloade danach /forum/online.php wird folgendes angezeigt

Es sind zur Zeit 102 Members und 100 Gäste online


Auffallend ist das das Verhältnis von Members zu Gästen überhaupt nicht stimmt, da es im Forum immer mehr Gäste sind, auf online.php aber immer 1-2 Member mehr als Gäste.

Irgendwo ist hier der Wurm drin!

Alle Sessions in viewonline.php online.php page_header.php und im Panel wurden auf 1800 gesetzt.

Wie gesagt im Forum unten stimmt die Anzeige sehr gut, ich möchte auf online.php diesselbe Anzahl der User wie im Forum.

Verfasst: 28.02.2004 17:26
von WWW-Schizo
ok hab das ganze jetzt bisschen laufen gehabt und siehe da:

die Benutzeranzahl bei online.php wird immer mehr, jetzt schon bei über 200 Members und 200 Gäste UND im Forum unten wird folgendes angezeigt: Der Rekord liegt bei 236 Benutzern (was fortlaufend erhöht wird)

Acid deine online.php muss irgendwo einen Bug haben, lasse ich diese weg geht es einwandfrei aber ich brauche diese ja.

hier nochmal die komplette online.php:

(fehlt da noch eine Datei weil in das Language File musste ja auch noch u.a. 'Online_user_total2' eingetragen werden und das steht hier gar nicht in der Beschreibung oben drin !!!!!!1
<?php
define('IN_PHPBB', true);

/***************************************************************************
## Mod Title: Who's online on any other page
## Filename: online.php
## Mod Version: 1.0.0
## Author: Acid <acid_junky@web.de> , Germany, Berlin
## Modified by : Roman Malarev <roman@malarev.com> , Italy, Milan
## Description: Shows on index page who is online on forum now
##
## Installation Level: easy
## Installation Time: 1 Minute
########################################################
##
## Pre-Installation Notes:
## This only works with MySQL.
##
## Installation Notes:
## <?php include('online.php'); ?> must be the first line at the
## index page (to avoid warnings "Cannot add header information...")
##
## put <?php echo $onlinet; ?> - to show online users on forum -
## wherever you want @ your index page
***************************************************************************/

$phpbb_root_path = ""; //path to below files!!!!
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

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

$user_forum_sql = ( !empty($forum_id) ) ? "AND ( u.user_session_page = $forum_id
OR s.session_page = $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() - 30 ) . "
OR u.user_session_time >= " . ( time() - 30 ) . " )
$user_forum_sql
ORDER BY u.username 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;

$prev_user_id = 0;

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&" . 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
{
$guests_online++;
}

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

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'])
{
$sql = "UPDATE " . CONFIG_TABLE . "
SET config_value = '$total_online_users'
WHERE config_name = 'record_online_users'";
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't update online user record (nr of users)", "", __LINE__, __FILE__, $sql);
}

$sql = "UPDATE " . CONFIG_TABLE . "
SET config_value = '" . time() . "'
WHERE config_name = 'record_online_date'";
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't update online user record (date)", "", __LINE__, __FILE__, $sql);
}

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

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_total2'];
}
else
{
$l_t_user_s = $lang['Online_users_total2'];
}

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_total2'];
}
else
{
$l_g_user_s = $lang['Guest_users_total2'];
}

$l_online_users = sprintf($l_t_user_s, $total_online_users);
$l_online_users .= sprintf($l_g_user_s, $guests_online);

$onlinet="$l_online_users";
echo $onlinet;
?>

Verfasst: 03.03.2004 11:59
von Acid
Geht´s hiermit als online.php ?

Verfasst: 10.12.2004 11:40
von WWW-Schizo
Hi Acid,

ich hatte jetzt von 2.0.6 auf 2.0.11 upgedated und die online.php nicht verändert, kommt aber nur ne weiße Seite, bitte poste mir mal dazu noch die install.txt ich habe keine Ahnung mehr was ich sonst noch verändern musste!!!

DANKE

Verfasst: 17.02.2005 17:02
von niffi
hab anscheinend das gleiche problem. wo finde ich da eine aktuelle online.php wo dieser fehler behobne wurde?

acid´s link geht nicht mehr.