Forums / National / Russian / Вопросы и пожелания к движку

Для юзеров Seditio и новичков

Yusupov
#38629 2013-11-26 12:29
#38605 Trustmaster:

Такое наблюдалось на протяжении всего существования Cotonti на этом сайте, и на других сайтах в случайном порядке. Источник до сих пор не найден. Но возможно, что это какой-то новый баг.

Решение проблемы очень простое:

plugins/whosonline/whosonline.input.php строку 26 заменить:

вместо

if ($sql->rowCount() == 1)

на

if ($sql->rowCount() > 0)

Запостил в гитхаб

Добавлено 31 минута спустя:

Эх, этот вариант тоже не работает. Надо искать другую причину.

Добавлено 27 минуты спустя:

Попробовал сделать так:

if ($usr['id'] > 0)
{
    $online_row = $db->query("SELECT * FROM $db_online WHERE online_userid=".$usr['id'])->fetch();

    if (!empty($online_row))
    {
        $online_count = 1;
        $sys['online_location'] = $online_row['online_location'];
        $sys['online_subloc'] = $online_row['online_subloc'];
    }
    else
    {
        $not_counted_usr = 1;
    }
}
elseif(!$cfg['plugin']['whosonline']['disable_guests'])
{
    $online_row = $db->query("SELECT * FROM $db_online WHERE online_ip='".$usr['ip']."' AND online_userid < 0 LIMIT 1")->fetch();

    if (!empty($online_row))
    {
        $sys['online_location'] = $online_row['online_location'];
        $sys['online_subloc'] = $online_row['online_subloc'];
    }
    else
    {
        $not_counted_vis = 1;
    }
}

Добавлено 2 минуты спустя:

В исходной версии происходит повторный запрос, который уже использовался, поэтому теряется значение переменной $sys['online_location'] из-за которой в таблице дублируется запись для авторизованного пользователя, при его перемещении по сайту.

Добавлено 2 часа спустя:

Этот вариант тоже не работает. очень жаль.

This post was edited by Yusupov (2013-11-26 15:51, 10 years ago)