Ru-Board.club
← Вернуться в раздел «Ikonboard v.2»

» Глюк с гостями: больше одного не показывает

Автор: BigMac
Дата сообщения: 15.06.2002 08:14
Grey2002
Нет... не помогает....
Вся бага тут сидит....

Код: sub whosonline {
local($instruct) = @_;
($tempusername, $where, $method) = split(/\|/, $instruct);

$guests = 0;
$members = 0;
$currenttime = time;
$membergone = 30;
$userexpire = $currenttime - ($membergone * 60);

$ipaddress = $ENV{'REMOTE_ADDR'};
$logname = $tempusername;
&getmember("$inmembername");
$tempusername = "$ibtxt{'0043'} $ipaddress" if ($tempusername eq "$ibtxt{'0043'}");

$filetoopen = "$ikondir" . "data/onlinedata.dat";
$filetoopen = &stripMETA($filetoopen);
open(FILE,"$filetoopen");
@onlinedata = <FILE>;
close(FILE);

open(FILE,">$filetoopen");
flock(FILE, 2);
$memberprinted = "no";
foreach $line (@onlinedata) {
chomp $line;
($savedusername, $savedtime, $savedwhere) = split(/\|/, $line);
$savedusername =~ s/\_/ /g;
$tempusername =~ s/\_/ /g;
$savedusername = &unHTML($savedusername);
$tempusername = &unHTML($tempusername);
unless ("$userexpire" > "$savedtime") {
if ("$savedusername" ne "$tempusername") { print FILE "$line\n"; }
elsif ("$savedusername" eq "$tempusername") { print FILE $savedusername."|$currenttime|$where\n"; $memberprinted = "yes";}
}
} # end foreach
if ($memberprinted eq "no") { print FILE "$tempusername|$currenttime|$where\n";}
close(FILE);
Автор: Shurik
Дата сообщения: 15.06.2002 15:29

Цитата:
$referer = $ENV{'HTTP_REFERER'};
$browser = $ENV{'HTTP_USER_AGENT'};
$media = $ENV{'HTTP_ACCEPT'};
а это по-моему от хака, который показывает, кто по каким топикам ходил, с каким броузером и т.д.
имхо можете потереть.

BigMac

Цитата:
Нет... не помогает....
Вся бага тут сидит....
не знаю, какая там бага сидит, однако если хотите - может на форум пройти да посмотреть, как гости выводятся... (тока вдвоем втроем идите). у меня-то все нифтяк.
Автор: Fuchsia
Дата сообщения: 15.06.2002 16:21

Цитата:

Код: $membergone = 30;
Автор: Alexander Ipp
Дата сообщения: 15.06.2002 17:50
Grey2002
Это к хаку статистики относится...
Автор: Shurik
Дата сообщения: 16.06.2002 01:19
Fuchsia

Цитата:
Вот ента шутковина уж точно не при чем

естесно!

Цитата:
А больше ничего не поменялось - как был по описи "Гость - одна штука", так и остался...
значит в другом косяк, а не в этом коде. ищите.
Автор: Alexander Ipp
Дата сообщения: 16.06.2002 09:21
Ладно, начинаю делать.
Автор: Shurik
Дата сообщения: 16.06.2002 18:15
кстати, может у вас в whosonline.cgi косяк?
Автор: BigMac
Дата сообщения: 16.06.2002 18:22
Shurik
Хусонлайн там вообще непричем......просто не пишется в онлайндату........все дело именно в том куске, который я дал...
Автор: alexei
Дата сообщения: 16.06.2002 21:03
2all
У кого whosonline неправильно пашет киньте кусок из икон.либ и whosonline.cgi, а то даже мне стало интересно что там у вас не работает. А вообще-то надо еще одно поле хранить с айпишником и не надо будет никаких проверок. Но на хак у меня нет времени
Автор: BigMac
Дата сообщения: 16.06.2002 22:54
alexei
Че-то я не догоняю причем тут хусонлайн.....там идет генерация хтмлки...данные берутся из файла онлайндата... а мы говорим про багу такую....что данные в онлайндату не пишутся.....то есть это именно процедура!!!,а не хусонлай.цги...... Кусок этой процедуры из икон.либа уже кинули....см выше....там лага и спряталась...тока вот пока не догоняю где....
Автор: Shurik
Дата сообщения: 16.06.2002 23:43
BigMac
не, ну у меня-то все ок!
может просто проверка не срабатывает, типо эта:

Код: if ("$savedusername" ne "$tempusername") { print FILE "$line\n"; }
elsif ("$savedusername" eq "$tempusername") { print FILE $savedusername."|$currenttime|$where\n"; $memberprinted = "yes";}
}
Автор: BigMac
Дата сообщения: 17.06.2002 07:21
Shurik
Не знаю...надо думать.....больше всего меня веселит эта строчка
Код: $tempusername = "$ibtxt{'0043'} $ipaddress" if ($tempusername eq "$ibtxt{'0043'}");
Автор: Shurik
Дата сообщения: 17.06.2002 08:22
BigMac
да, действительно...
$tempusername принимает значения "Guest IP", если эта перемен. равна "Guest". хехе.
Автор: Grey2002
Дата сообщения: 17.06.2002 08:27
вот вам как на 2.1.8, там пашет :

Код: ###########################
# Who's online feature.

sub whosonline {
local($instruct) = @_;
($tempusername, $where, $method) = split(/\|/, $instruct);

$guests = 0;
$members = 0;
$currenttime = time;
$membergone = 15;
$userexpire = $currenttime - ($membergone * 60);

$ipaddress = $ENV{'REMOTE_ADDR'};
if ($tempusername eq "Guest") { $tempusername = "Guest $ipaddress"; }

$filetoopen = "$ikondir" . "data/onlinedata.dat";
$filetoopen = &stripMETA($filetoopen);
open(FILE,"$filetoopen");
@onlinedata = <FILE>;
close(FILE);

open(FILE,">$filetoopen");
flock(FILE, 2);
$memberprinted = "no";
foreach $line (@onlinedata) {
chomp $line;
($savedusername, $savedtime, $savedwhere) = split(/\|/, $line);
$savedusername =~ s/\_/ /g;
$tempusername =~ s/\_/ /g;
unless ("$userexpire" > "$savedtime") {
if ("$savedusername" ne "$tempusername") { print FILE "$line\n"; }
elsif ("$savedusername" eq "$tempusername") { print FILE "$savedusername|$currenttime|$where\n"; $memberprinted = "yes";}
}
} # end foreach
if ($memberprinted eq "no") { print FILE "$tempusername|$currenttime|$where\n";}
close(FILE);

if ($method eq "both") {

$filetoopen = "$ikondir" . "data/onlinedata.dat";
$filetoopen = &stripMETA($filetoopen);
open(FILE,"$filetoopen");
@onlinedata = <FILE>;
close(FILE);
foreach $line (@onlinedata) {
chomp $line;
($savedusername, $savedtime, $savedwhere) = split(/\|/, $line);
$lookfor = substr($savedusername, 0, 5);
if ($lookfor eq "Guest") { $guests++; }
else {
$members++;
if ($members < 10) {
$cleanmember = $savedusername;
$cleanmember =~ s/ /\_/g;
$memberoutput .= qq~&raquo; <a href="$profileprog?action=show&member=$cleanmember">$savedusername </a>~;
}
}
}
}
} # end routine
Автор: BigMac
Дата сообщения: 17.06.2002 08:35
Народ, багу я пофиксил...спасибо тем, кто еще юзает 2.18.... Тебе объясняю как фиксить...я был прав, дело было именно в том куске, про который я говорил.....открываем икон.либ....ищем процедуру хусонлайн.. ищем
Код: $ipaddress = $ENV{'REMOTE_ADDR'};
$logname = $tempusername;
&getmember("$inmembername");
$tempusername = "$ibtxt{'0043'} $ipaddress" if ($tempusername eq "$ibtxt{'0043'}");
Автор: Grey2002
Дата сообщения: 17.06.2002 08:41
BigMac
сенкс будем ща тестить...
Автор: Fuchsia
Дата сообщения: 17.06.2002 09:04
BigMac,
СПАСИБИЩЩЩЩЩЩЩЕ!!!
Заработало!!!
Все гости теперь, как на ладошке!
Дай Бог тебе здоровья и жену хорошую! (ой, чего это я?)
Автор: Alexander Ipp
Дата сообщения: 17.06.2002 09:13
BigMac
Ты как-то не через то место это делаешь... Не нравится мне такой способ. Держите мой фикс.
Там ещё фича добавляется - админ может в whosonline.cgi посмотреть IP'шники юзеров.
Делаем значит так:
В ikon.lib найдите подрограмму whosonline:

Код: sub whosonline { ...много кода... }
Автор: BigMac
Дата сообщения: 17.06.2002 09:20
Alexander Ipp
Чувак, респект....я просто истинный код переделал...а ты заново написл...твое, ИМХО, лучше....твое ща поставлю
Автор: Grey2002
Дата сообщения: 17.06.2002 09:21
Alexander Ipp
во, точно, с фичей лучше, ща буду фиксить... Сенкс
Автор: Alexander Ipp
Дата сообщения: 17.06.2002 09:43
BigMac
Да я не с нуля писал, я переделал то, что у меня там было... Там вообще о гуестах мало что было. Вероятно, из-за того, что версия очень старая.
Автор: Fuchsia
Дата сообщения: 17.06.2002 09:54
Alexander Ipp,
и тебе СПАСИБ БОЛЬШОЙ
Ух, сколько у меня сразу гостей... просто банкет
Автор: Shurik
Дата сообщения: 17.06.2002 11:39
продолжим банкет.
я тут тоже кое-че делал.
после

Код: if ($savedusername eq "$ibtxt{'0043'}" && $savedwhere eq "Logging in") { next; }
Автор: gregor
Дата сообщения: 17.06.2002 12:59
Alexander Ipp
Я поставил твой хак просто супер. Спасибо!!!!!!!!!!!!!!!!
Автор: Grey2002
Дата сообщения: 17.06.2002 13:14
gregor
не хак, а фикс
Автор: Alexander Ipp
Дата сообщения: 17.06.2002 14:16
Shurik
Имхо не нужно, только вес страницы повышает. Я не стал делать.
Цитата:
if ($savedusername eq "$ibtxt{'0043'}" && $savedwhere eq "Logging in") { next; }

Я же сказал выкинуть этот код вроде...
Автор: Fuchsia
Дата сообщения: 17.06.2002 17:55
Так-с... Гости отображаются все, но теперь глюк с мемберами. Заходит чел. на форум, пишет чего-то под своим ником, а отображается все равно как гость, но сообщение от него выводится правильно, под его ником. Причем, такое не со всеми, а как-то выборочно. Сейчас вот и меня в форум пустил, но тоже как гостя показывает. Что бы это могло быть?
Автор: Alexander Ipp
Дата сообщения: 17.06.2002 18:07
Fuchsia
На главной странице конфы или в whosonline.cgi?
Если происходит такое с отбражением на главной странице, то что в этот момент происходит в whosonline.cgi?
Я конечно пороюсь, но вряд ли тут дело в коде...
Автор: Fuchsia
Дата сообщения: 17.06.2002 18:13
Alexander Ipp, и на главной странице, и в whosonline.cgi.
Что удивительно, ведь не всех он так выводит, только особо избранных. По крайней мере, в одно и то же время половину мемберов показывает, а остальных прячет... Вот бы узнать, по какому принципу он их сортирует?
Автор: Alexander Ipp
Дата сообщения: 17.06.2002 18:43
Fuchsia
Попробуй две строчки с unhtml закомментить...

Добавлено
Alexander Ipp
У BigMac'а на конфе вроде всё Ok...

Страницы: 12345

Предыдущая тема: Баг с Яваскриптом (javascript) во всех версиях IkonBoard


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.