Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Глюк с гостями: больше одного не показывает

Модерирует : Antuan

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8

Открыть новую тему     Написать ответ в эту тему

BigMac



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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);  
 

 
Тут править надо..

Всего записей: 444 | Зарегистр. 31-05-2001 | Отправлено: 09:14 15-06-2002
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

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

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


----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 16:29 15-06-2002
Fuchsia



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:

Код:
$membergone = 30;  

Вот ента шутковина уж точно не при чем - она просто в самом ikon.lib прописывает, за какой промежуток времени показывать посетителей. По крайней мере, у меня сразу с 10 минут изменилось на 30...
А больше ничего не поменялось - как был по описи "Гость - одна штука", так и остался...

Всего записей: 285 | Зарегистр. 16-02-2002 | Отправлено: 17:21 15-06-2002 | Исправлено: Fuchsia, 17:22 15-06-2002
Alexander Ipp



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Grey2002
Это к хаку статистики относится...

Всего записей: 1943 | Зарегистр. 20-08-2001 | Отправлено: 18:50 15-06-2002
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Fuchsia

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

естесно!

Цитата:
А больше ничего не поменялось - как был по описи "Гость - одна штука", так и остался...  
значит в другом косяк, а не в этом коде. ищите.

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 02:19 16-06-2002
Alexander Ipp



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ладно, начинаю делать.

Всего записей: 1943 | Зарегистр. 20-08-2001 | Отправлено: 10:21 16-06-2002
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
кстати, может у вас в whosonline.cgi косяк?

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 19:15 16-06-2002
BigMac



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shurik
Хусонлайн там вообще непричем......просто не пишется в онлайндату........все дело именно в том куске, который я дал...

Всего записей: 444 | Зарегистр. 31-05-2001 | Отправлено: 19:22 16-06-2002
alexei



ibhacker
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
2all
У кого whosonline неправильно пашет киньте кусок из икон.либ и whosonline.cgi, а то даже мне стало интересно что там у вас не работает. А вообще-то надо еще одно поле хранить с айпишником и не надо будет никаких проверок. Но на хак у меня нет времени

Всего записей: 647 | Зарегистр. 06-07-2001 | Отправлено: 22:03 16-06-2002
BigMac



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alexei
Че-то я не догоняю причем тут хусонлайн.....там идет генерация хтмлки...данные берутся из файла онлайндата... а мы говорим про багу такую....что данные в онлайндату не пишутся.....то есть это именно процедура!!!,а не хусонлай.цги...... Кусок этой процедуры из икон.либа уже кинули....см выше....там лага и спряталась...тока вот пока не догоняю где....

Всего записей: 444 | Зарегистр. 31-05-2001 | Отправлено: 23:54 16-06-2002
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
BigMac
не, ну у меня-то все ок!
может просто проверка не срабатывает, типо эта:

Код:
if ("$savedusername" ne "$tempusername") { print FILE "$line\n"; }  
                    elsif ("$savedusername" eq "$tempusername") { print FILE $savedusername."|$currenttime|$where\n"; $memberprinted = "yes";}  
                    }

?

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 00:43 17-06-2002
BigMac



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shurik
Не знаю...надо думать.....больше всего меня веселит эта строчка
Код:
$tempusername = "$ibtxt{'0043'} $ipaddress" if ($tempusername eq "$ibtxt{'0043'}");    

Всего записей: 444 | Зарегистр. 31-05-2001 | Отправлено: 08:21 17-06-2002
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
BigMac
да, действительно...
$tempusername принимает значения "Guest IP", если эта перемен. равна "Guest". хехе.

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 09:22 17-06-2002
Grey2002



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
вот вам как на 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


----------
Мой Блог

Всего записей: 1325 | Зарегистр. 24-12-2001 | Отправлено: 09:27 17-06-2002
BigMac



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, багу я пофиксил...спасибо тем, кто еще юзает 2.18.... Тебе объясняю как фиксить...я был прав, дело было именно в том куске, про который я говорил.....открываем икон.либ....ищем процедуру хусонлайн.. ищем
Код:
$ipaddress = $ENV{'REMOTE_ADDR'};  
    $logname = $tempusername;  
    &getmember("$inmembername");  
    $tempusername = "$ibtxt{'0043'} $ipaddress" if ($tempusername eq "$ibtxt{'0043'}");    
 

 
меняем на
Код:
$ipaddress = $ENV{'REMOTE_ADDR'};
if ($tempusername eq "$ibtxt{'0043'}") { $tempusername = "Guest $ipaddress"; }

 
ищем
Код:
                $savedusername = &unHTML($savedusername);  
                $tempusername  = &unHTML($tempusername);    
 

и удаляем это нафиг
 
и усе.......радуемся жизни......)))

Всего записей: 444 | Зарегистр. 31-05-2001 | Отправлено: 09:35 17-06-2002
Grey2002



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
BigMac
сенкс будем ща тестить...

----------
Мой Блог

Всего записей: 1325 | Зарегистр. 24-12-2001 | Отправлено: 09:41 17-06-2002
Fuchsia



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BigMac,
СПАСИБИЩЩЩЩЩЩЩЕ!!!
Заработало!!!
Все гости теперь, как на ладошке!
Дай Бог тебе здоровья и жену хорошую! (ой, чего это я?)

Всего записей: 285 | Зарегистр. 16-02-2002 | Отправлено: 10:04 17-06-2002
Alexander Ipp



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BigMac
Ты как-то не через то место это делаешь... Не нравится мне такой способ. Держите мой фикс.
Там ещё фича добавляется - админ может в whosonline.cgi посмотреть IP'шники юзеров.
Делаем значит так:
В ikon.lib найдите подрограмму whosonline:

Код:
sub whosonline { ...много кода... }

Замените её на вот эту:

Код:
sub whosonline { # Fixed by AlexanderIpp
    local($instruct) = @_;
    ($tempusername, $where, $method) = split(/\|/, $instruct);
 
    $guests = 0;
    $members = 0;
    $currenttime = time;
#### У кого стоит rus_plus 3 (не более старые!), закомментите следующую строку:
    $membergone = 15;
####
    $userexpire = $currenttime - ($membergone * 60);
     
    $ipaddresstowo = $ENV{'REMOTE_ADDR'};
######## Stats hack
    #$logname = $tempusername;
########
    &getmember("$inmembername");
    if ($tempusername eq "$ibtxt{'0043'}" || $userregistered eq "no") { $tempusername = "$ibtxt{'0043'}"; }  
     
        $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 "$ibtxt{'0043'}") {  
                                   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
 

У кого стоит хак статистики - раскомментируйте соотв. строчки, у кого его нет - удалите. У кого стоит rus_plus3 (там где время проверки хузонлайна ставится через АЦ) - закомментите выделенную жирным строку.
Сохраните и закройте ikon.lib. Если будете заливать насерв, не забудьте раскомментить flock'и в вышеприведённом куске кода.
Теперь откройте whosonline.cgi
Найдите:
Код:
 
foreach $line (@onlinedata) {

Выше добавьте:
Код:
 
&getmember("$inmembername");
if ($membercode eq "ad") { $viewusrIP = "ok"; } else { undef $viewusrIP; }

Найдите:
Код:
 
($savedusername, $savedtime, $savedwhere) = split(/\|/, $line);

И замените на:
Код:
 
($savedusername, $savedtime, $savedwhere, $usrIP) = split(/\|/, $line);
unless ($viewusrIP eq "ok") {undef $usrIP;}

Найдите:
Код:
 
<b>$savedusername</b>

И замените на:
Код:
 
<b>$savedusername</b> $usrIP

Найдите:
Код:
 
$lookfor = substr($savedusername, 0, 5);
if ($lookfor eq "$ibtxt{'0043'}") { $savedusername = "$ibtxt{'0043'}"; }

Уберите или закомментируйте эти строки.
Найдите:
Код:
 
if ($savedusername eq "$ibtxt{'0043'}" && $savedwhere eq "Logging in") { next; }

Сделайте с ней то же самое.
Вроде всё, наслаждайтесь.
Такой фикс имхо лучше, чем BigMac'овский.
И новая фича добавляется. Если она кому-то не нужна - я объясню, как поставить без неё.

Всего записей: 1943 | Зарегистр. 20-08-2001 | Отправлено: 10:13 17-06-2002
BigMac



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexander Ipp
Чувак, респект....я просто истинный код переделал...а ты заново написл...твое, ИМХО, лучше....твое ща поставлю

Всего записей: 444 | Зарегистр. 31-05-2001 | Отправлено: 10:20 17-06-2002
Grey2002



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alexander Ipp
во, точно, с фичей лучше, ща буду фиксить... Сенкс

----------
Мой Блог

Всего записей: 1325 | Зарегистр. 24-12-2001 | Отправлено: 10:21 17-06-2002
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Глюк с гостями: больше одного не показывает


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru