11.04.2020, 17:28
Hallo Leute,
ich habe in einem Fremdforum folgendes Problem:
Für den Block im Kopfbereich ist die Datei "wwo24.php" definiert also "wer war heute online".
Hier werden User teilweise doppelt/mehrfach (mit der gleichen Onlinezeit) angezeigt.
- die User waren nicht mit verschiedenen Geräten online
- der Fehler entsteht sporadisch
- es betrifft sporadisch verschiedene User
Ich kann den Fehler nicht explizit herbeiführen. Es funktioniert ein paar Tage, dann plötzlich wieder nicht.
Der Fehler scheint aus dem Nichts zu entstehen und betrifft unterschiedliche User.
Ich finde auch im Code der Funktion (siehe Anhang) keinen Hinweis auf dieses Verhalten.
Das Problem besteht übrigens auch in anderen Foren, die ich mir ansehen durfte.
Hat jemand eine Idee??
Anbei die "wwo24.php"
Ich finde keinen Fehler, der mir plausibel für dieses Verhalten ist.
ich habe in einem Fremdforum folgendes Problem:
Für den Block im Kopfbereich ist die Datei "wwo24.php" definiert also "wer war heute online".
Hier werden User teilweise doppelt/mehrfach (mit der gleichen Onlinezeit) angezeigt.
- die User waren nicht mit verschiedenen Geräten online
- der Fehler entsteht sporadisch
- es betrifft sporadisch verschiedene User
Ich kann den Fehler nicht explizit herbeiführen. Es funktioniert ein paar Tage, dann plötzlich wieder nicht.
Der Fehler scheint aus dem Nichts zu entstehen und betrifft unterschiedliche User.
Ich finde auch im Code der Funktion (siehe Anhang) keinen Hinweis auf dieses Verhalten.
Das Problem besteht übrigens auch in anderen Foren, die ich mir ansehen durfte.
Hat jemand eine Idee??
Anbei die "wwo24.php"
Ich finde keinen Fehler, der mir plausibel für dieses Verhalten ist.
PHP-Code:
<?php
/**###########################################
# ProPortal 2.6.2
# ab MyBB Version 1.8.4
# von MrBrechreiz
# Datum: 25.02.2018
###########################################*/
if (!defined("IN_PORTAL")) {
die("<div style=\"border:1px solid #CC0000; padding:3px; margin:0; font-family:Tahoma; width:250px; font-size:12px;\"><strong>ERROR:</strong> This file cannot be accessed directly!</div>");
}
require_once MYBB_ROOT."inc/functions_user.php";
$online_today = '';
$ot_order = $proportal->settings['ot_order'];
$ot_sort = $proportal->settings['ot_sort'];
$order = "ORDER BY u.{$ot_order} {$ot_sort}";
date_default_timezone_set("Europe/Berlin");
$timestamp = time();
$timesearch = mktime(0, 0, 0, date("n"), date("j"), date("Y"));
$queries = array();
$queries[] = $db->simple_select(
"users u LEFT JOIN ".TABLE_PREFIX."sessions s ON (u.uid=s.uid)",
"s.sid, s.ip, s.time, s.location, u.*, u.uid, u.username, u.invisible, u.usergroup, u.displaygroup, u.avatar, u.lastactive",
"u.lastactive >= '{$timesearch}' {$order}"
);
$queries[] = $db->simple_select(
"sessions s LEFT JOIN ".TABLE_PREFIX."users u ON (s.uid=u.uid)",
"s.sid, s.ip, s.uid, s.time, s.location, u.*, u.username, u.invisible, u.usergroup, u.displaygroup, u.avatar, u.lastactive",
"s.time >= '{$timesearch}' {$order}"
);
$comma = $onlinemembers = '';
$membercount = $guestcount = $anoncount = 0;
$doneusers = $ips = array();
foreach($queries as $query)
{
while($onlineuser = $db->fetch_array($query))
{
if(isset($onlineuser['sid'])){
$botkey = strtolower(str_replace("bot=", '', $onlineuser['sid']));
}
if($onlineuser['uid'] > 0){
if($doneusers[$onlineuser['uid']] < $onlineuser['time'] || !$doneusers[$onlineuser['uid']])
{
$ava_global = $proportal->settings['ava_global'];
$only_ava = $proportal->settings['onlyava_wwo24'];
if($ava_global == 1)
{
if($proportal->settings['ava_wwo24'] == 1 || $only_ava == 1)
{
if($onlineuser['avatar'] != '')
{
$onlineuser['avatar'] = htmlspecialchars_uni($onlineuser['avatar']);
}
else
{
if($proportal->settings['ava_wwo24_dim'] == '')
{
$onlineuser['avatar'] = $mybb->settings['bburl']."/images/default_avatar.png";
$onlineuser['avatardimensions'] = "25|25";
}
else
{
$onlineuser['avatar'] = $mybb->settings['bburl']."/images/default_avatar.png";
$onlineuser['avatardimensions'] = $proportal->settings['ava_wwo24_dim'];
}
}
$avatar_dimensions_wwo24 = explode("|", $onlineuser['avatardimensions']);
if($avatar_dimensions_wwo24[0] && $avatar_dimensions_wwo24[1])
{
list($max_width_wwo24, $max_height_wwo24) = explode("|", my_strtolower($proportal->settings['ava_wwo24_dim']));
if($avatar_dimensions_wwo24[0] > $max_width_wwo24 || $avatar_dimensions_wwo24[1] > $max_height_wwo24)
{
require_once MYBB_ROOT."inc/functions_image.php";
$scaled_dimensions_wwo24 = scale_image($avatar_dimensions_wwo24[0], $avatar_dimensions_wwo24[1], $max_width_wwo24, $max_height_wwo24);
$block_wwo24_avatar_width_height = "width=\"{$scaled_dimensions_wwo24['width']}\" height=\"{$scaled_dimensions_wwo24['height']}\"";
}
else
{
$block_wwo24_avatar_width_height = "width=\"{$avatar_dimensions_wwo24[0]}\" height=\"{$avatar_dimensions_wwo24[1]}\"";
}
}
$avatar = "<img class=\"portalava\" src=\"".$onlineuser['avatar']."\" alt=\"\" {$block_wwo24_avatar_width_height} border=\"0\" style=\"vertical-align:middle; min-height:15px;min-width:15px; margin:6px;\" />";
}
else
{
$avatar = "";
}
}
else
{
$avatar = "";
}
$groupcolor_global = $proportal->settings['groupcolor_global'];
if($groupcolor_global == 1 && $proportal->settings['gcolor_wwo24'] == 1)
{
$formated_username = format_name(htmlspecialchars_uni($onlineuser['username']), $onlineuser['usergroup'], $onlineuser['displaygroup']);
$formated_username = str_replace(array('<b>', '</b>', '<strong>', '</strong>', '<em>', '</em>'), array('', '', '', '', '', ''), $formated_username);
$onlineuser['profilelink'] = build_profile_link($formated_username, $onlineuser['uid']);
}
else
{
$onlineuser['profilelink'] = build_profile_link(htmlspecialchars_uni($onlineuser['username']), $onlineuser['uid']);
}
if($onlineuser['invisible'] == 1){
++$anoncount;
}
++$membercount;
if($onlineuser['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1 || $onlineuser['uid'] == $mybb->user['uid'])
{
$invisiblemark = ($onlineuser['invisible'] == 1) ? "*" : "";
$username = format_name(htmlspecialchars_uni($onlineuser['username']), $onlineuser['usergroup'], $onlineuser['displaygroup']);
$onlineuser['userusername'] = htmlspecialchars_uni($onlineuser['username']);
$onlineuser['userusername'] = stripslashes($onlineuser['userusername']);
$onlinetime = my_date($mybb->settings['timeformat'], $onlineuser['lastactive']);
if($only_ava == 1)
{
eval("\$onlinemembers .= \"".$templates->get("pro_portal_wwo24_onlinemembers_only_ava")."\";");
}
else if($proportal->settings['online_today_time'] == 1)
{
eval("\$onlinemembers .= \"".$templates->get("pro_portal_wwo24_onlinemembers_today_time")."\";");
$comma = ", ";
}
else
{
eval("\$onlinemembers .= \"".$templates->get("pro_portal_wwo24_onlinemembers")."\";");
$comma = ", ";
}
}
if(isset($onlineuser['time']))
{
$doneusers[$onlineuser['uid']] = $onlineuser['time'];
}
else
{
$doneusers[$onlineuser['uid']] = $onlineuser['lastactive'];
}
}
}
else if(strstr($onlineuser['sid'], "bot=") !== false && $session->bots[$botkey] && !in_array($onlineuser['ip'], $ips))
{
$onlinemembers .= $comma.format_name($session->bots[$botkey], $session->botgroup);
$comma = ", ";
++$botcount;
}
else if($proportal->settings['online_today_count_guest'] == 1)
{
++$guestcount;
$guests[] = $onlineuser['ip'];
}
}
}
$datum = date($mybb->settings['dateformat']);
$onlinecount = $membercount + $guestcount;
$onlinebit = ($onlinecount != 1) ? $lang->online_plural : $lang->online_singular;
$memberbit = ($membercount != 1) ? $lang->online_member_plural : $lang->online_member_singular;
$anonbit = ($anoncount != 1) ? $lang->online_anon_plural : $lang->online_anon_singular;
$lang->whos_online_today = $lang->sprintf($lang->whos_online_today, $datum);
if(!$result_blocks['title'] == 1)
{
$result_blocks['title'] = $lang->whos_online_today;
}
if(isset($result_blocks['title']))
{
$result_blocks['title'] = $result_blocks['title'];
}
if($proportal->settings['online_today_count_guest'] == 1){
$guestbit = ($guestcount != 1) ? $lang->online_guest_plural : $lang->online_guest_singular;
$lang->online_note_today = $lang->sprintf($lang->online_note_today_g, my_number_format($onlinecount), $onlinebit, $datum, my_number_format($membercount), $memberbit, my_number_format($anoncount), $anonbit, my_number_format($guestcount), $guestbit);
}else{
$lang->online_note_today = $lang->sprintf($lang->online_note_today, my_number_format($onlinecount), $onlinebit, $datum, my_number_format($membercount), $memberbit, my_number_format($anoncount), $anonbit);
}
eval("\$online_today = \"".$templates->get("pro_portal_wwo24_online_today")."\";");
if($proportal->settings['responsive'] == 1 && $mybb->user['uid'] == 0)
{
eval("\$wwonline_today = \"".$templates->get("pro_portal_wwo24_responsive")."\";");
}
else if($mybb->user['portalresonsive'] == 1)
{
eval("\$wwonline_today = \"".$templates->get("pro_portal_wwo24_responsive")."\";");
}
else if($mybb->user['portalresonsive'] == 0)
{
eval("\$wwonline_today = \"".$templates->get("pro_portal_wwo24")."\";");
}
else if($proportal->settings['responsive'] == 0 && $mybb->user['uid'] == 0)
{
eval("\$wwonline_today = \"".$templates->get("pro_portal_wwo24")."\";");
}
echo $wwonline_today;