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

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

Автор: BigMac
Дата сообщения: 17.06.2002 19:28
Fuchsia
Ага....ну если этот не пашет, то ставь мой...он точно пашет
Автор: Fuchsia
Дата сообщения: 17.06.2002 21:21
BigMac

Цитата:
Ага....ну если этот не пашет, то ставь мой...он точно пашет


Что я и сделала. Сразу все построились по ранжиру .
Хорошо, когда есть выбор - хочешь то ставь, хочешь - это
Автор: Shurik
Дата сообщения: 17.06.2002 21:23
Alexander Ipp

Цитата:
Я же сказал выкинуть этот код вроде...
сорри, я твой хак не заюзал, т.к. у меня не было такой проблемы и я свое дополнение раньше твоего написал. просто не стал сюда выкладывать...
а коль речь зашла, так я и выложил.
а че с этим куском кода?

Код: if ($savedusername eq "$ibtxt{'0043'}" && $savedwhere eq "Logging in") { next; }
Автор: Alexander Ipp
Дата сообщения: 18.06.2002 07:32
Fuchsia
Ну как хочешь, но это скорее глюки серва какие-то, например с переменными окружения. Я посмотрел - не может там ничего такого быть...
Shurik

Цитата:
if ($savedusername eq "$ibtxt{'0043'}" && $savedwhere eq "Logging in") { next; }

Я не вижу смысла в откидывании логинящихся юзеров. К тому же, код не станет работать из-за перевода на русский - фразы Loggind in там нет.
Короче, народ, потестите кто-нибудь мой код на предмет глюков. Хотя глючить там особо нечего...
Вообще на всякий случай ещё рекомендую после установки хака удалить файл onlinedata.dat. На всякий случай...
Автор: Grey2002
Дата сообщения: 18.06.2002 10:17
Shurik

Цитата:
IPшник, который по твоему фиксу выводится

так это только админам бедным
Автор: Shurik
Дата сообщения: 18.06.2002 20:13
Alexander Ipp

Цитата:
Я не вижу смысла в откидывании логинящихся юзеров.
так, а этот кусок кода не учитывал просто тех, кто логинится? это где пароль что ли вводят?


Grey2002

Цитата:
так это только админам бедным
ну дык, ссылкой ник выделить - 200 байт.
Автор: Alexander Ipp
Дата сообщения: 18.06.2002 20:23
Shurik
Ну да. Он ДОЛЖЕН был откидывать, но не откидывал.
Автор: Fuchsia
Дата сообщения: 19.06.2002 03:29
Alexander Ipp

Цитата:
Ну как хочешь, но это скорее глюки серва какие-то, например с переменными окружения. Я посмотрел - не может там ничего такого быть...


У меня все может быть , у меня такие штуки иногда происходят, что хостер только диву дается , хорошо еще не выгоняет
Автор: Fuchsia
Дата сообщения: 21.06.2002 22:05
Ничего не понимаю...
Ставлю хак BigMac, показывает всех гостей и юзеров, но!.. Но не показывает IP юзеров, только гостей.

Ставлю хак Alexander Ipp, снова та же ерунда - часть юзеров не показывает...

И вот куды бечь и что брать бедному крестьянину?

Удалила файл onlinedata, вроде, после этого все юзеры появились. Как только ентот файл снова сам создался, половина юзеров исчезла ...

Может, кто посмотрит, чего у меня там не так:
whosonline.txt
ikon.txt
Автор: Alexander Ipp
Дата сообщения: 22.06.2002 11:03
Fuchsia
Короче у себя баг я кажется нашёл.

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

$guests = 0;
$members = 0;
$currenttime = time;
#### На новых бордах убрать следующу строку....
$membergone = 15;
$userexpire = $currenttime - ($membergone * 60);

$ipaddresstowo = $ENV{'REMOTE_ADDR'};

######## Stats hack
#$logname = $tempusername;
########
&getmember("$inmembername");
if ($tempusername eq "Guest" || $userregistered eq "no") { $tempusername = "Guest"; }

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

open(FILE,">$filetoopen");
#flock(FILE, 2);
$memberprinted = "no";
foreach $line (@onlinedata) {
chomp $line;
($savedusername, $savedtime, $savedwhere, $savedip) = split(/\|/, $line);
$savedusername =~ s/ /_/g;
$tempusername =~ s/ /_/g;
#$savedusername = &unHTML($savedusername);
#$tempusername = &unHTML($tempusername);
unless ("$userexpire" > "$savedtime") {
if ($savedusername ne "Guest" && $tempusername ne "Guest") {
if ("$savedusername" ne "$tempusername") { print FILE "$line\n"; }
else { print FILE "$savedusername|$currenttime|$where|$ipaddresstowo\n"; $memberprinted = "yes";}
} else {
if ("$savedip" ne "$ipaddresstowo") { print FILE "$line\n"; }
else { print FILE "$savedusername|$currenttime|$where|$ipaddresstowo\n"; $memberprinted = "yes";}
}
}
} # end foreach
if ($memberprinted eq "no") { print FILE "$tempusername|$currenttime|$where|$ipaddresstowo\n";}
close(FILE);
####### Stats hack
#$referer = $ENV{'HTTP_REFERER'};
#$browser = $ENV{'HTTP_USER_AGENT'};
#$media = $ENV{'HTTP_ACCEPT'};
#
#open(LOGFILE, ">>$ikondir/data/stats.log");
##flock(FILE, 2);
#print LOGFILE "$logname|$currenttime|$where|$referer|$ipaddress|$browser\n";
#close(LOGFILE);
#######
if ($method eq "$ibtxt{'0016'}") {

$filetoopen = "$ikondir" . "data/onlinedata.dat";
$filetoopen = &stripMETA($filetoopen);
open(FILE,"$filetoopen");
@onlinedata = <FILE>;
close(FILE);
foreach $line (@onlinedata) {
chomp $line;
($savedusername, $savedtime, $savedwhere, $savedipadr) = split(/\|/, $line);
$lookfor = substr($savedusername, 0, 5);
if ($lookfor eq "$ibtxt{'0043'}") { $guests++; }
else {
$members++;
$cleanmember = $savedusername;
$cleanmember =~ s/ /\_/g;
$savedusername = substr($savedusername,0,20) if length $savedusername > 19;
$memberoutput .= qq~&raquo; <a href="$profileprog?action=show&member=$cleanmember">$savedusername </a>~;
}
}
}
} # end routine
Автор: Fuchsia
Дата сообщения: 22.06.2002 11:33
Alexander Ipp
Заменила код на новый. Что делает форум. Пока не сотрешь файл онлайндата, все по-прежнему. Как только я его удаляю, форум показывает меня-страшного юзверя, но... Как только я выхожу из форума и захожу как гость, он меня уже как гостя в упор не видит.
Так и тянется ручка нарисовать кучу рыдающих смайликов...
Автор: Jovani
Дата сообщения: 22.06.2002 15:33
Alexander Ipp
Я твой последний код поставил - два часа полёт нормальный, пока глюков нет.
Автор: Alexander Ipp
Дата сообщения: 22.06.2002 19:02
Пробуй заменить код который в этой подпрограмме на вот такой:

Код:
unless ("$userexpire" > "$savedtime") {
if ($savedusername ne "Guest" && $tempusername ne "Guest") {
if ("$savedusername" ne "$tempusername") { print FILE "$line\n"; }
else { print FILE "$tempusername|$currenttime|$where|$ipaddresstowo\n"; $memberprinted = "yes";}
} else {
if ("$savedip" ne "$ipaddresstowo") { print FILE "$line\n"; }
else { print FILE "$tempusername|$currenttime|$where|$ipaddresstowo\n"; $memberprinted = "yes";}
}
}
Автор: durachka
Дата сообщения: 22.06.2002 21:11
Alexander Ipp, спасибо, все работает кк часы . Так давно эта проблема была, и вот наконец-то решение .
Автор: Fuchsia
Дата сообщения: 22.06.2002 22:48
Alexander Ipp
Заменила кусок, теперь работает. Спасибо
Правда, появилась одна незначительная странность (теперь показывает, кто в данный момент находится на форуме, а не за последние "*" минут, стоит выйти и зайти гостем, как уже и не видно, был ли юзер здесь), так что, буду жить в реальном времени.

Автор: Alexander Ipp
Дата сообщения: 23.06.2002 18:25
Fuchsia
Хм, опять не ладно...
Короче, накосячил я там имхо капитально. Завтра буду опять ковырять... Кажется я всё понял.

Добавлено
Так, пробуем:

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

$guests = 0;
$members = 0;
$currenttime = time;
### Если новая версия, с данной строкой поступаем как обычно. lol
$membergone = 15;
$userexpire = $currenttime - ($membergone * 60);

$ipaddresstowo = $ENV{'REMOTE_ADDR'};
#$ipaddresstowo = "786.345.785.12";

######## Stats hack
#$logname = $tempusername;
########
&getmember("$inmembername");
if ($tempusername eq "Guest" || $userregistered eq "no") { $tempusername = "Guest"; }

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

open(FILE,">$filetoopen");
#flock(FILE, 2);
$memberprinted = "no";
foreach $line (@onlinedata) {
chomp $line;
($savedusername, $savedtime, $savedwhere, $savedip) = split(/\|/, $line);
$savedusername =~ s/ /_/g;
$tempusername =~ s/ /_/g;
#$savedusername = &unHTML($savedusername);
#$tempusername = &unHTML($tempusername);
unless ("$userexpire" > "$savedtime") {
if ($tempusername eq $savedusername) {
if ($savedusername eq "Guest" && $savedip eq $ipaddresstowo) {
print FILE "$tempusername|$currenttime|$where|$ipaddresstowo\n";
$memberprinted = "yes";
}
elsif ($savedusername eq "Guest" && $savedip ne $ipaddresstowo) {
print FILE "$line\n";
}
elsif ($savedusername ne "Guest") {
print FILE "$tempusername|$currenttime|$where|$ipaddresstowo\n";
$memberprinted = "yes";
}
} else { print FILE "$line\n"; }
}
} # end foreach
if ($memberprinted eq "no") { print FILE "$tempusername|$currenttime|$where|$ipaddresstowo\n";}
close(FILE);
####### Stats hack
#$referer = $ENV{'HTTP_REFERER'};
#$browser = $ENV{'HTTP_USER_AGENT'};
#$media = $ENV{'HTTP_ACCEPT'};
#
#open(LOGFILE, ">>$ikondir/data/stats.log");
##flock(FILE, 2);
#print LOGFILE "$logname|$currenttime|$where|$referer|$ipaddress|$browser\n";
#close(LOGFILE);
#######
if ($method eq "$ibtxt{'0016'}") {

$filetoopen = "$ikondir" . "data/onlinedata.dat";
$filetoopen = &stripMETA($filetoopen);
open(FILE,"$filetoopen");
@onlinedata = <FILE>;
close(FILE);
foreach $line (@onlinedata) {
chomp $line;
($savedusername, $savedtime, $savedwhere, $savedipadr) = split(/\|/, $line);
$lookfor = substr($savedusername, 0, 5);
if ($lookfor eq "$ibtxt{'0043'}") { $guests++; }
else {
$members++;
$cleanmember = $savedusername;
$cleanmember =~ s/ /\_/g;
$savedusername = substr($savedusername,0,20) if length $savedusername > 19;
$memberoutput .= qq~&raquo; <a href="$profileprog?action=show&member=$cleanmember">$savedusername </a>~;
}
}
}
} # end routine
Автор: Fuchsia
Дата сообщения: 24.06.2002 05:33
Alexander Ipp

Цитата:
ПОтестил - вроде всё в полном ажуре...

Уррра! Заработало!!!

Спасибище тебе огромное, а то крыша моя уже грозилась отъехать
Автор: Alexander Ipp
Дата сообщения: 24.06.2002 10:02
Ну всё, ништяк. Извиняюсь за тО. что заставил долго ждать...
На РУ.борд что ли статью выкинуть?
Автор: Fuchsia
Дата сообщения: 24.06.2002 10:06
Alexander Ipp, ты такое огромное дело сделал, и еще извиняешься? Если бы не ты, то и сидели бы такие, как я, с одним гостем. А так заходишь на форум, душа радуется, глядя, сколько народу там пасется
Автор: Grey2002
Дата сообщения: 24.06.2002 11:01
Alexander Ipp
можно маленький оффтоп как раз про это :

Цитата:
Незарегистрированных: 8, зарегистрированных: 2 (Рекорд: 10, установлен 2:18 24-6-2002)

такое есть или сам писал? если сам, поделись, плиз...
Автор: Alexander Ipp
Дата сообщения: 24.06.2002 17:51
Fuchsia
Да ладно уж, чего там... Кто-то же должен был пофиксить.
Grey2002
Сам писал. Где-то на ибхакерсе хак такой был, но из-за такой мелочиидти даже было лень туда.
Поищи, сейчас выкладывать некогда. Если не найдёшь - я выложу, фича мелкая и простая.
Автор: Grey2002
Дата сообщения: 25.06.2002 03:33
Alexander Ipp
а как он примерно называется? сорри, не нашёл...
Автор: Alexander Ipp
Дата сообщения: 25.06.2002 18:16
Grey2002
А ХЗ. ЧТо-то с record...
Автор: Shurik
Дата сообщения: 26.06.2002 12:52
Grey2002

Цитата:
такое есть или сам писал? если сам, поделись, плиз...
да небось отдельный маленький файлик - там че-нить типо такого:
data|unreg|reg
и потом сверяем скока сейчас в сумме с тем, скока было (тащим анрегов и регов из того файла)...
data - число - время рекорда.
короче, все просто.
Автор: Alexander Ipp
Дата сообщения: 26.06.2002 18:53
Shurik
Нет, только дата и кол-во. Ладно, потом дам вам всем, сейчас очень тороплюсь.
Автор: Grey2002
Дата сообщения: 27.06.2002 01:30
Alexander Ipp

Цитата:
Ладно, потом дам вам всем, сейчас очень тороплюсь

ок, ждём-с спасибо заранее
Shurik

Цитата:
короче, все просто

я принцип то и так допёр,.. только вот я перла не знаю...
Автор: Shurik
Дата сообщения: 27.06.2002 10:21
Alexander Ipp

Цитата:
Нет, только дата и кол-во.
а точно!.. ударяя себя по голове
я просто думал у тебя еще выводится максимальное кол-во анрегов и регистренных...
да простой хак.
Автор: Marilda
Дата сообщения: 02.03.2003 16:48
All
Значит, решение найдено и заключается оно в замене sub whosonline {...} в icon.lib на представленный здесь
http://forum.ru-board.com/topic.cgi?forum=21&topic=0968&start=100#6
и правках во whosonline.cgi, описанных в
http://forum.ru-board.com/topic.cgi?forum=21&topic=0968&start=60#18

Спасибо. Буду делать.

Вопросик.

Цитата:
Если будете заливать насерв, не забудьте раскомментить flock'и в вышеприведённом куске кода.

Объясните, пожалуйста, что именно раскомментить в куске кода (первая ссылка).
Автор: Xnom
Дата сообщения: 02.03.2003 21:25
Marilda

Цитата:
Объясните, пожалуйста, что именно раскомментить в куске кода (первая ссылка).

поменяй все #flock на flock
убери строку

Код: $membergone = 15;
Автор: Marilda
Дата сообщения: 02.03.2003 21:30
Xnom
Уже догнала, на две минуты ты меня опередил Эх, плохо быть чайником
А $membergone = 15; разве надо убирать? У меня вроде не через АЦ 15 устанавливается.

Страницы: 12345

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


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