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

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

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

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

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

Xnom



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

Цитата:
У меня вроде не через АЦ 15 устанавливается.  

у тебя старая версия форума?
Если ты это кол-во минут не через АЦ регулируешь, то нужно оставить


----------
Китайцы будут атаковать маленькими мобильными группами по 10 млн. человек в каждой....

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 22:42 02-03-2003
Marilda

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xnom
Наверное старая, два года уж минуло. В АЦ в "настройке переменных" кол-во минут не устанавливается, а в icon.lib sub whosonline {...} строка $membergone = 15; есть. Так что оставляю.
 
 
Добавлено
Пашет!!!!!
Александру Ipp и всем-всем-всем огромное спасибо!

Всего записей: 381 | Зарегистр. 24-10-2002 | Отправлено: 22:48 02-03-2003 | Исправлено: Marilda, 00:24 03-03-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня IB2.1.9 и есть проблема с показом количества гостей.
Т.е. в он-лайне всегда только один гость.
 
По совету Alexander Ipp сделал все нужные коррекции, но все проблема не решена.
 
Все предлагаемые изменения в файле whosonline не сделал, так как уже все ненужные строки отсутствовали, а те что нужно было добавить уже были добавлены.
Файл icon.lib изменил как указывалось.  
 
Но не работает. Все по старому.
Помогите, может для 2.1.9 (скачан с руборда) есть какие-то дополнительные нюансы?
 

Цитата:
Теперь откройте 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; }  
 
Сделайте с ней то же самое.  
Вроде всё, наслаждайтесь.  
 

 
В файле icon.lib:

Цитата:
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  
 


Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 22:18 10-04-2003
Xnom



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

Цитата:
Помогите, может для 2.1.9 (скачан с руборда) есть какие-то дополнительные нюансы?  
 

нет, ничего подобного не замечано.
Этот хак работает. Прочитайте всю тему, пожалуйста.

----------
Китайцы будут атаковать маленькими мобильными группами по 10 млн. человек в каждой....

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 02:10 11-04-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xnom, я прочитал всю тему, но у меня не работает нормальный показ гостей.
 
Помогите, плиз.  
 
Здесь я выложил свои файлы (формат txt):
ikon.lib
whosonline.cgi

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 22:26 11-04-2003 | Исправлено: olsufr, 22:30 11-04-2003
Xnom



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
olsufr
я не вижу ошибок в Ваших файлах...
 


----------
Китайцы будут атаковать маленькими мобильными группами по 10 млн. человек в каждой....

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 01:03 16-04-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xnom, togda v chem mozhet bytj delo?
Gostj vsegda odin.

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 01:48 16-04-2003
Marilda

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
olsufr
А время, за которое считается число посетителей, какое? Это если оно в АЦ устанавливается. Может, минут совсем мало и гость действительно один?

Всего записей: 381 | Зарегистр. 24-10-2002 | Отправлено: 11:20 16-04-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Marilda, а где в АЦ устанавливается это время?
Я посмотрел в раздел "Настройка переменных", но ничего похожего там я не нашел.
 
 
Добавлено
В icon.lib sub whosonline {...}  
у меня есть строка $membergone = 15;

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 14:30 16-04-2003
Marilda

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
olsufr
В более поздних версиях устанавливается через АЦ. Но раз
Цитата:
есть строка $membergone = 15;
то значит, дело не в этом.
Впечатление, что взяты не окончательный варианты правки во  whosonline.cgi и ikon.lib, а промежуточные, т.к. до опубликования Александром Ипп окончательного варианта были такие же жалобы.  
 
 
 
 
Добавлено
А в onlinedata.dat тоже только один гость?

Всего записей: 381 | Зарегистр. 24-10-2002 | Отправлено: 14:52 16-04-2003 | Исправлено: Marilda, 14:59 16-04-2003
olsufr



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

Цитата:
А в onlinedata.dat тоже только один гость?

Да.

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 16:57 16-04-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
olsufr
я когда отсюда взял хак - у меня тоже коряво работало. Пришлось потом доделывать. Проверь там переменную с IP. Нужно, чтобы скрипт брал из окружающей переменной айпи и записывал это все в onlinedata.dat (насколько я помню).

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

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 07:25 17-04-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shurik, а как это сделать?
Мог бы дать конкретный рецепт?

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 17:56 17-04-2003
Xnom



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
olsufr
попробуй в ikon.lib так прописать:

Код:
 
sub whosonline {  
    local($instruct) = @_;  
    ($tempusername, $where, $method) = split(/\|/, $instruct);  
   
    $guests = 0;  
    $members = 0;  
    $currenttime = time;  
    $userexpire = $currenttime - ($membergone * 60);  
       
    $ipaddresstowo = "$ENV{'HTTP_X_FORWARDED_FOR'}-$ENV{'REMOTE_ADDR'}-$ENV{'HTTP_PROXY_CONNECTION'}-$ENV{'HTTP_VIA'}";  
    &getmember("$inmembername");  
    if ($tempusername eq "Guest" || $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 ($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);  
 
        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  



----------
Китайцы будут атаковать маленькими мобильными группами по 10 млн. человек в каждой....

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 19:11 17-04-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xnom, спасибо за помощь.
Но гость все также один.

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 19:28 17-04-2003
Xnom



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
olsufr
хорошо, тогда вот этот код:

Код:
 
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"; }  
                    }  
                 

замени на

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

 


----------
Китайцы будут атаковать маленькими мобильными группами по 10 млн. человек в каждой....

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 19:36 17-04-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня чего-то вообще скрипт whosonline.cgi (после изменений в ikon.lib) перестал работать: белое место(никаких сообщений об ошибке).
 
Вот ссылка на ikon.lib

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 00:44 18-04-2003 | Исправлено: olsufr, 01:24 18-04-2003
Xnom



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
olsufr
не работает, так не работает поехали дальше
 
попробуй этот код (из первоначального куска)

Код:
 
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);    
   
         

 
заменить на этот

Код:
 
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);



----------
Китайцы будут атаковать маленькими мобильными группами по 10 млн. человек в каждой....

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 02:07 18-04-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
olsufr
ладно, если не забуду из дома взять- дам.
но тебе надо, чтобы у тебя РЕАЛЬНО было несколько гостей.

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

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 11:44 18-04-2003
Shurik



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

Код:
 
sub whosonline {
    local($instruct) = @_;
    ($tempusername, $where, $method) = split(/\|/, $instruct);
 
    $guests = 0;
    $members = 0;
    $currenttime = time;
    $membergone = 30;
    $userexpire = $currenttime - ($membergone * 60);
     
    $ipaddresstowo = $ENV{'REMOTE_ADDR'};
    #$logname = $tempusername;
    &getmember("$inmembername");
    #$tempusername = "$ibtxt{'0043'} $ipaddress" if ($tempusername eq "$ibtxt{'0043'}");  
    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;
                    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);
     
        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 = $cleanmember;
                $savedusername = substr($savedusername,0,20) if length $savedusername > 19;
                $memberoutput .= qq~&raquo; <a href="$profileprog?action=show&member=$cleanmember">$savedusername </a>~;
                }
            }
        }
} # end routine
 

 
так, по-моему, больше кодов не нужно. Чтобы проверить эту фишку - попросите кого-нить из мемберов зайти под гостем и самому тоже...

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

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 22:37 29-04-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 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