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~» <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> $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'овский. И новая фича добавляется. Если она кому-то не нужна - я объясню, как поставить без неё. |