#!/usr/bin/perl -w
use CGI qw(:standard);
#use CGI::Carp qw (fatalsToBrowser);
my (@Months, @Days, $Sec, $Min, $Hour, $Day, $Month, $Year, $Day2, $Date);#время
my $Objekt=new CGI;#создаём объект cgi
my $Do = $Objekt->param("do");
my $Ocenka = $Objekt->param("ocenka");
my $Ip = $ENV{\'REMOTE_ADDR\'};
#########################Значения переменных, подлежащих изменению############################
my $color_nomer_odin = "#213535";#один из двух цветов выводимой таблицы
my $color_nomer_dva = "#2c4647";#один из двух цветов выводимой таблицы
my $puti_k_kartinkam = "http://mixgalaxy.ru/fruityloops/images/bar/";#путь к картинкам (показывают сколько процентов).
#########################конец переменных, подлежащих изменению###############################
&vrema;
if(!$Objekt->param)
{
&pervraiting;
}else
{
if ($Ocenka == 0){
&pervraiting;
}else{
&openfile;
}
}
#################################################################################
sub pomestam()
{
$lost[2] =~s/[^0-9]//;#удаляем все символы кроме цифирь из количества голосов
$reitingprint = $lost[3];#получаем значение прошлого рейтинга (до добавления этого)
$pomoch = "$reitingprint"*"$lost[2]"; #умножаем старый рейтинг на старое же количество голосов
$lost[2] +=1;#обнавляем количество голосов (просто добавив один голос)
$summa = $Ocenka + $pomoch;#считаем сумму всех оценок
$lost[3] = ($summa/$lost[2]);#получаем среднее арифмитическое, т.е. рейтинг
$losttemp = $lost[3];#делаем промежуточную переменную, для наглядности
$lost[3] = sprintf("%1.2f",$losttemp);#округляем значение до 2 знаков после запятой
open (WEKI, "> txt/top$Do.txt") || die("Невозможно открыть файл txt/top$Do.txt");
print WEKI $lost[0],"\\n";# название
print WEKI $lost[1],"\\n";# автор
print WEKI $lost[2],"\\n";# количество голосов
print WEKI $lost[3],"\\n";# рейтинг
print WEKI $lost[4],"\\n";# место
print WEKI $Ip,"\\n"; #новый IP
print WEKI $lost[5],"\\n"; #отсюда и далее просто смещаем IP
print WEKI $lost[6],"\\n"; #отсюда и далее просто смещаем IP
print WEKI $lost[7],"\\n"; #отсюда и далее просто смещаем IP
print WEKI $lost[8],"\\n"; #отсюда и далее просто смещаем IP
print WEKI $lost[9],"\\n"; #отсюда и далее просто смещаем IP
print WEKI $lost[10],"\\n"; #отсюда и далее просто смещаем IP
print WEKI $lost[11],"\\n"; #отсюда и далее просто смещаем IP
print WEKI $lost[12],"\\n"; #отсюда и далее просто смещаем IP
print WEKI $lost[13],"\\n"; #отсюда и далее просто смещаем IP
print WEKI $lost[14],"\\n"; #отсюда и далее просто смещаем IP
print WEKI $lost[15],"\\n";# просто отчёркивание
close(WEKI);
###################вроде изменил файл, хотя...############################
###далее необходимо пробежаться по всем файлам, прочесть рейтинги и расставить по местам###
for($y=1; $y<21; $y++)
{
open(TTT ,"< txt/top$y.txt")|| die("Невозможно открыть файл txt/top$y.txt");
@list=<TTT>; # Помещаем строки в массив
close(TTT);#Закрываем дескриптор
chomp @list;
$list[4] =~s/[^0-9]//;#а с места удаляем все символы кроме цифирь...
$tempinfa = "$list[0]\\@\\@\\@$list[1]\\@\\@\\@$list[2]\\@\\@\\@$list[5]\\@\\@\\@$list[6]\\@\\@\\@$list[7]\\@\\@\\@$list[8]\\@\\@\\@$list[9]\\@\\@\\@$list[10]\\@\\@\\@$list[11]\\@\\@\\@$list[12]\\@\\@\\@$list[13]\\@\\@\\@$list[14]\\@\\@\\@$list[15]";
$reitin[$y-1] = $list[3];
$infa[$y-1] = $tempinfa;
}
############ну наконец! все значеничя собраны, что есть безусловный гут, однозначно!#######
@listok = sort{$b <=> $a} @reitin;
for($s=0; $s<20; $s++){#ещё один счётчик для того чтоб всё получилось
$tempfnum = ($s + 1);#эта переменная нужна для указания файла и для указания места в топе
for ($gkj=0;$gkj<20;$gkj++){
if ($reitin[$gkj] eq $listok[$s]){
$nomer = $gkj;
$reitin[$gkj] = "udalen";
$gkj=21;
}
}
$mesto = $tempfnum;#ну это понятно, указывем место
$proch = $infa[$nomer];
@prochayainfa = split(/\\@\\@\\@/, $proch);
open (KUK, "> txt/top$tempfnum.txt")|| die("Невозможно открыть файл txt/top$tempfnum.txt");
print KUK $prochayainfa[0],"\\n";# название
print KUK $prochayainfa[1],"\\n";# автор
print KUK $prochayainfa[2],"\\n";# количество голосов
print KUK $listok[$s],"\\n";# рейтинг
print KUK $mesto,"\\n";# место
print KUK $prochayainfa[3],"\\n";# новый ip-ник
print KUK $prochayainfa[4],"\\n";# старый ip-ник
print KUK $prochayainfa[5],"\\n";# старый ip-ник
print KUK $prochayainfa[6],"\\n";# старый ip-ник
print KUK $prochayainfa[7],"\\n";# старый ip-ник
print KUK $prochayainfa[8],"\\n";# старый ip-ник
print KUK $prochayainfa[9],"\\n";# старый ip-ник
print KUK $prochayainfa[10],"\\n";# старый ip-ник
print KUK $prochayainfa[11],"\\n";# старый ip-ник
print KUK $prochayainfa[12],"\\n";# старый ip-ник
print KUK $prochayainfa[13],"\\n";# старый ip-ник
print KUK $prochayainfa[14],"\\n";# отчёркивание
#Закрываем файл
close(KUK);
}
### print "Location: [url]http://fruityloops.mixgalaxy.ru/ok.shtml\\n\\n[/url]";
print "Location: [url]http://mixgalaxy.ru/fruityloops/ok.shtml\\n\\n[/url]";
}
#################################################################
################################Что-то вроде вспомогательной функции, вообщем сами разбирайтесь
sub openfile()
{
open (WEK, "< txt/top$Do.txt") || die("Невозможно открыть файл txt/top$Do.txt");
@lost=<WEK>; # Помещаем строки в массив
close(WEK);#Закрываем дескриптор чтоб не мешал
chomp @lost;
&proverkaip;
}
###########################################################
######################А проверим-ка мы IP...###################################
sub proverkaip()
{
my $bigbyaka=0;
for(my $yup=5; $yup<15; $yup+=1)
{
if ("$lost[$yup]" eq "$Ip") { $bigbyaka=1;}
}
if ($bigbyaka==1)
{
#### print "Location: [url]http://fruityloops.mixgalaxy.ru/error.shtml\\n\\n[/url]";
print "Location: [url]http://mixgalaxy.ru/fruityloops/error.shtml\\n\\n[/url]";
}
else{
&pomestam;
}
}
#########################################################################
##################################Просто распечатка рейтинга (юзверь пока не голосовал!)#########
sub pervraiting(){
print "Content-Type: text/html; Charset=windows-1251\\n\\n";
open USERSUM, "< txt/verx.txt";
my @ghfhg = <USERSUM>;
chomp @ghfhg;
my $qby = $#ghfhg;
for (my $lov=0;$lov<=$#ghfhg;$lov++){
if ($ghfhg[$lov]=~m/^.*<!--#include file="(.*?)" -->.*$/is){
$filbig= $&;
$filbig=~s/^.*<!--#include file="(.*?)" -->.*$/$1/si;
open FFY, "< $filbig";
my @ghlit = <FFY>;
close(FFY);
chomp @ghlit;
my $ryiu = $#ghlit;
my $frikl ="";
for (my $fdg=0; $fdg<=$ryiu;$fdg++){
$frikl.=$ghlit[$fdg];
}
$ghfhg[$lov]=$frikl;
}
}
print qq(@ghfhg);
close(USERSUM);
######################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
print <<"zagolovok";
<table border="1" cellpadding="4" cellspacing="1" style="border-collapse: collapse" bordercolor="#5F6F6F" width="460" id="AutoNumber1" height="269">
<tr>
<td bgcolor="$color_nomer_odin"><p class="heading_center">№</p></td>
<td bgcolor="$color_nomer_odin"><p class="heading_center">Название</p></td>
<td bgcolor="$color_nomer_odin"><p class="heading_center">Автор</p></td>
<td bgcolor="$color_nomer_odin"><p class="heading_center">Оценка</p></td>
<td bgcolor="$color_nomer_odin"><p class="heading_center">Рейтинг</p></td>
<td bgcolor="$color_nomer_odin"><p class="heading_center">%</p></td>
<td bgcolor="$color_nomer_odin"><p class="heading_center">Г-сов</p></td>
</tr>
zagolovok
for(my $i=1; $i<21; $i++){
open(HJK,"txt/top$i.txt");
my @lst=<HJK>; # Помещаем строки в массив
close(HJK);#Закрываем файл
chomp @lst;
my $tmpkarful= $lst[3];
if($tmpkarful <= 1 ){
$karkar = "000.gif";}
elsif((1 < $tmpkarful) and ($tmpkarful <= 1.5)){
$karkar = "010.gif";}
elsif((1.5< $tmpkarful) and ($tmpkarful <=2))
{
$karkar = "015.gif";
}
elsif((2< $tmpkarful) and ($tmpkarful <=2.5))
{
$karkar = "020.gif";
}
elsif((2.5< $tmpkarful) and ($tmpkarful <=3))
{
$karkar = "025.gif";
}
elsif((3< $tmpkarful) and ($tmpkarful <=3.5))
{
$karkar = "030.gif";
}
elsif((3.5< $tmpkarful) and ($tmpkarful <=4))
{
$karkar = "035.gif";
}
elsif((4< $tmpkarful) and ($tmpkarful <=4.5))
{
$karkar = "040.gif";
}
elsif((4.5< $tmpkarful) and ($tmpkarful <=5))
{
$karkar = "045.gif";
}
elsif((5< $tmpkarful) and ($tmpkarful <=5.5))
{
$karkar = "050.gif";
}
elsif((5.5< $tmpkarful) and ($tmpkarful <=6))
{
$karkar = "055.gif";
}
elsif((6< $tmpkarful) and ($tmpkarful <=6.5))
{
$karkar = "060.gif";
}
elsif((6.5< $tmpkarful) and ($tmpkarful <=7))
{
$karkar = "065.gif";
}
elsif((7< $tmpkarful) and ($tmpkarful <=7.5))
{
$karkar = "070.gif";
}
elsif((7.5< $tmpkarful) and ($tmpkarful <=8))
{
$karkar = "075.gif";
}
elsif((8< $tmpkarful) and ($tmpkarful <=8.5))
{
$karkar = "080.gif";
}
elsif((8.5< $tmpkarful) and ($tmpkarful <=9))
{
$karkar = "085.gif";
}
elsif((9< $tmpkarful) and ($tmpkarful <=9.5))
{
$karkar = "090.gif";
}
elsif((9.5< $tmpkarful) and ($tmpkarful <10))
{
$karkar = "095.gif";
}else{
$karkar = "100.gif";
}
$lst[3] *=10;