Forum Webscript.Ru

Программирование => Perl => Тема начата: DJ Fat от 04 Января 2003, 14:01:16

Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: DJ Fat от 04 Января 2003, 14:01:16
Привет.

У меня большая проблема. Есть CGI-скрипт, установлен он здесь (http://www.mixgalaxy.ru/cgi-bin/top/startnew.cgi) и он же генерит эту страницу. Но почему-то на этой странице не показываются баннер BMBN и счётчики Mail.Ru и RAX. Баннер и счётчики лежат в одном txt-файле и инклюдятся на все страницы сайта (http://www.mixgalaxy.ru/fruityloops/), в т.ч. и на страницу со скриптом, но на ней баннер и счётчики не хотят показываться! Причём если посмотреть source генерируемой startnew.cgi страницы, там код недостающего баннера и счётчиков присутствуют! :)

Что же мне делать? Как побороть эту проблему?
Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: DJ Fat от 04 Января 2003, 14:03:13

#!/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=; # Помещаем строки в массив
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=; # Помещаем строки в массив
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 = ;
chomp @ghfhg;
my $qby = $#ghfhg;
for (my $lov=0;$lov<=$#ghfhg;$lov++){
if ($ghfhg[$lov]=~m/^.*.*$/is){
$filbig= $&;
$filbig=~s/^.*.*$/$1/si;
open FFY, "< $filbig";
my @ghlit = ;
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";










zagolovok

for(my $i=1; $i<21; $i++){
open(HJK,"txt/top$i.txt");
my @lst=; # Помещаем строки в массив
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;
Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: DJ Fat от 04 Января 2003, 14:03:50
Продолжение :)

my $fora1 = "


";

my $fora2 = "";


my @miksinf = ($fora2, $fora1);

my $tet=$i;
if (($tet == 2)  or ($tet == 4) or ($tet == 6) or ($tet == 8) or ($tet == 10) or ($tet == 12) or ($tet == 14) or ($tet == 16) or ($tet == 18) or ($tet == 20)){
$tet = 0;
}else{
$tet = 1;
}


$lst[4] =~s/[^0-9]//;
$reiting{$lst[4]} = $miksinf[$tet];#а в этот массив запихиваем только рейтинги каждого микса

}



#Рейтинг
for(my $w=1; $w<=20; $w++){
my $t = $w;

for (my $rim=1; $rim<=20; $rim+=2){
if ($t==$rim){$t=1;}
}
if ($t gt 1){$t=0;}
my @cvettempary = ("$color_nomer_odin","$color_nomer_dva");
print "$reiting{$w}\\n";
}
}



print <<"konetc";

Название

Автор

Оценка

Рейтинг

%

Г-сов

$lst[0]

$lst[1]

$lst[3]

$lst[2]

$lst[0]

$lst[1]

$lst[3]

$lst[2]

$w

 
konetc

open USERSU, "< txt/niz.txt";
#Перенаправляем пользователя на список
@ghfhg = ;
chomp @ghfhg;
$qby = $#ghfhg;
for (my $lov=0;$lov<=$#ghfhg;$lov++){
if ($ghfhg[$lov]=~m/^.*.*$/is){
$filbig= $&;
$filbig=~s/^.*.*$/$1/si;
open FFY, "< $filbig";
@ghlit = ;
close(FFY);
chomp @ghlit;
$ryiu = $#ghlit;
$frikl ="";
for (my $fdg=0; $fdg<=$ryiu;$fdg++){
$frikl.=$ghlit[$fdg];
}
$ghfhg[$lov]=$frikl;
}
}
print qq(@ghfhg);
close(USERSU);
exit;
#####################ОПРЕДЕЛЕНИЕ ВРЕМЕНИ###################################################
sub vrema(){
@Months = ();
push(@Months,"01");
push(@Months,"02");
push(@Months,"03");
push(@Months,"04");
push(@Months,"05");
push(@Months,"06");
push(@Months,"07");
push(@Months,"08");
push(@Months,"09");
push(@Months,"10");
push(@Months,"11");
push(@Months,"12");
@Days = ();
push(@Days,"Sunday");
push(@Days,"Monday");
push(@Days,"Tuesday");
push(@Days,"Wednesday");
push(@Days,"Thursday");
push(@Days,"Friday");
push(@Days,"Saturday");

($Sec,$Min,$Hour,$Day,$Month,$Year,$Day2) =
(localtime(time))[0,1,2,3,4,5,6];
if ($Sec < 10) { $Sec = "0$Sec"; }
if ($Min < 10) { $Min = "0$Min"; }
if ($Hour < 10) { $Hour = "0$Hour"; }
if ($Day < 10) { $Day = "0$Day"; }
$Year += "1900";
$Date= "$Day/$Months[$Month]/$Year $Hour:$Min:$Sec";
}
##############################Конец функции определения текущей даты#####################
Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: DJ Fat от 04 Января 2003, 14:05:06
Глеб, если ты чиатешь это сообщение, извини, что пришлось опубликовать этот код, другого выхода я не нашел, до тебя не достучишся.
Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: DJ Fat от 04 Января 2003, 14:07:36
В файле niz.txt содержится обычный HTML-код, идентичный коду остальных страниц сайта, на который показываются баннеры (вы можете в этом убедиться сами, посмотрев source страницы startnew.cgi и других страниц).
Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: ---===STINGER===--- от 04 Января 2003, 17:30:53
DJ Fat Слушай, это конечно здорово то что ты сюда исходники выложил и замусорил всю страничку, но вот Лично я не нашёл в твоём коде то место где этот самый баннер запрашивается .... знаешь, у меня тут было такое пару раз, но только не с быннерами и счётчиками а с картинкой в таблице. Ошибка у меня была Элементарная .... в html коде !ГЫыыыыыыы проверь-ка лучше ты свой ХТМЛ на этой старнице, скажем каким-ниить Хом Сайтом от макромедии, он тебе покажет где и какие теги не закрыты, и вообще покажет все ошибки в ХТМЛ! сделай это примерно так ... скопируй УЖЕ СГЕНИРИРОВАННУЮ скриптом страницу и загони её в хом сайт ... и если моё предположение верно то ты всё это увидишь!:) Удачи ...
Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: DJ Fat от 04 Января 2003, 18:34:26
---===STINGER===---
Ты не понял!!! HTML-код у меня правильный и код с баннером тоже и он в source\'e присутствует - СМОТРИ ЗДЕСЬ (http://www.mixgalaxy.ru/cgi-bin/top/startnew.cgi). Во всём виноват перл и CGI, мне кажется, потому что на других страницах тот же HTML-код и всё в порядке.

Вот тот самый HTML-код, если вам лень смотреть по ссылке выше source:

Файл niz.txt (html):


 

 
 
   
 
 
   
 
 
   
   
 


   
   
 
 
   
 
 
   
 
 
   
   
     


   

     
     
   
   




   
 
 
   
 






   
 
 





Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: ---===STINGER===--- от 05 Января 2003, 00:03:28
ГЫыыыыыыыыыыыыы ну чё я тебе могу сказать, баннер гришь из другова файла подгружается? и на всех страницах из одного? хм .... я бы тебе посоветовал бы проверить код баннера и прочее на спец символы и наличие "\\" перед ними ... а в чём различие этих страниц на которых он есть и на которых его нету?
Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: ---===STINGER===--- от 05 Января 2003, 00:08:45
если КОД БАННЕРА в ХТМЛ КОДЕ ПРИСУТСТВУЕТ!!!!! то значит у тебя ПРОСТО не видно баннера ... смотри СТО ПУДОВА ХТМЛ!:)
Объясняю, Роль перла в данной ситуации не велика ... ему нужно (грубо говаря) сгенерить страничку, он это делает .... принтует код баннера и прочую лабуду .... баннера нет?! :) соответственно чё то либо с ХТМЛ (в чём я уверен на сто процентов) либо в расрешении экрана , или закрыли аккаунт твой в сети или .... или ...... или ..... и т.д короче смотри ХТМЛ!:) мой тебе совет ...
Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: DJ Fat от 05 Января 2003, 13:26:55
---===STINGER===---
Блин! Ты не понял ничего! Код баннера ОДИНАКОВЫЙ НА ВСЕХ СТРАНИЦАХ САЙТА. НА ВСЕХ СТРАНИЦАХ САЙТА он показывается, а на startnew.cgi - НЕТ! >:(

Вот в чём проблема. А HTML я смотрел через Source, там код на всех страницах сайта одинаковый, в том числе и на .cgi!
Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: Mog. от 05 Января 2003, 17:01:46
Цитировать
Во всём виноват перл и CGI, мне кажется

А мне кажется виноват программист :)


Цитировать

   


Вот эти штуки "//"  из txt кода убери. И в случае rax- счетчика тоже убери. И заработают они. Я проверял по сгенеренному коду.
Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: DJ Fat от 05 Января 2003, 19:54:54
Mog.
Спасибо!!! Всё заработало!
Название: На странице, генерируемой CGI-скриптом не показываются баннеры и некоторые счётчики!
Отправлено: Mog. от 07 Января 2003, 08:12:49
Еще такая штука у тебя есть
Цитировать
print qq(@ghfhg);


если так сделать
for (@ghfhg){print "$_\\n"} может и низ.тхт не надо править будет, структура строк сохранится, а для явы это важно.