Forum Webscript.Ru

Программирование => Perl => Тема начата: AndyAN от 22 Ноября 2002, 03:57:49

Название: Подскажите как написать, а то я не селен в перле..
Отправлено: AndyAN от 22 Ноября 2002, 03:57:49
Доброе время суток !  :(
Подскажите незнающему человеку, как написать, форму закачки фотографий для этого скрипта, код внизу, сам скрипт выводит каталоги указанные в файле, тоесть
1<#>Авто<#>
2<#>Спорт<#>
3<#>Катикатры<#>

ну и так далее, цифра это каталог а по-русски это описание каталога, ну я думаю вы мне поняли....

#!d:/perl/bin/perl.exe

sub by_numf {(($sl{$a}<=>$sl{$b}));}
sub by_numr {(($sl{$b}<=>$sl{$a}));}

$script_name="index.cgi";
$content_dir="d:/e-love/www/pics";
$content_url="http://e-love.loc/pics";
$adv_dir="/home/sites/www.e-love.ru/web/adv";
$view_file="!template.html";
$next1="Страницы:";

if($ENV{\'REQUEST_METHOD\'} eq \'POST\'){sysread (STDIN,$query,$ENV{\'CONTENT_LENGTH\'});}
else{$query=$ENV{\'QUERY_STRING\'}}chomp $query;@querys=split \'&\',$query;%query;
foreach(@querys){if(/(.+)=(.+)/){$query{$1}=$2;}}

$nav="";
$menu="";
$prevnext="";
$title="Картинки";
$content="";

open f,"!cat";
@t=;
close f;
foreach(@t){chomp;@tmp=split \'<#>\';$nav.="   $tmp[1]
      $tmp[2]

";}
$nav="

$nav

";

if($query{r} ne \'\')
        {
        foreach(@t)
                {
                chomp;
                @tmp=split \'<#>\';
                if($tmp[0] eq $query{r})
                        {
                        $title="$tmp[1]";
                        if($query{n} eq \'\'){$query{n}=1;}
                        @list=glob"$content_dir/$query{r}/*.gif";
                        push(@list,glob"$content_dir/$query{r}/*.jpg");
                        push(@list,glob"$content_dir/$query{r}/*.png");
                        push(@list,glob"$content_dir/$query{r}/*.bmp");
                        if(@list)
                                {
                                %sl;
                                foreach(@list){if(~/(\\d+)/){$sl{$_}=$1;}}
                                @list=sort by_numr @list;
                                $cnt=1;
                                foreach(@list)
                                        {
                                        if($query{n}==$cnt){$menu.=" $cnt ";}
                                        else{$menu.=" $cnt ";}
                                        $cnt++;
                                        }
                                if($query{n}>1){$prev=$query{n}-1;$prevnext=" предыдущая ";}
                                else{$prevnext=" предыдущая ";}
                                $prevnext.="  ";
                                if($query{n}<$cnt-1){$next=$query{n}+1;$prevnext.=" следующая ";}
                                else{$prevnext.=" следующая ";}
                                $menu="

$menu

";
                                if($list[$query{n}-1]=~/.+\\/(.+)$/){$src="$content_url/$query{r}/$1";}
                                else{$src="";}
                                $content="";
                                }
                        else
                                {
                                $content="

В этом разделе нет картинок

";
                                }
                        }
                }
        }

open f,"$view_file";
@out=;
close f;

foreach(@out)
        {
        $_=~s/<\\!--title-->/

$title<\\/p>/gi;
        if($_=~/(<\\!--)(.+\\.txt)(-->)/)
                {
                open f,"$adv_dir/$2";
                @t=;
                close f;
                $_=~s/$1$2$3/@t/;
                }
        }

if($menu ne \'\'){foreach(@out){$_=~s/<\\!--pictures_menu-->/$menu/gi;}}
if($prevnext ne \'\'){foreach(@out){$_=~s/<\\!--prevnext_pic-->/

$prevnext<\\/p>
/gi;}}

if($content ne \'\')
        {
        open f,"!cat";
        @t=;
        close f;
        foreach(@t){chomp;@tmp=split \'<#>\';$chmenu.="$tmp[1]
";}

        foreach(@out)
                {
                $_=~s/<\\!--picture-->/$content/gi;
                $_=~s/<\\!--chmenu-->/

Картинки<\\/b><\\/center>$chmenu
/gi;
                $_=~s//

$next1<\\/p>/gi;
                }
        }
else        {foreach(@out){$_=~s/<\\!--picture-->/$nav/gi;}}

print "Content-type: text/html\\n\\n@out";

Подскажите за больше спасибо
---------
Заранее все благодарен

Название: Подскажите как написать, а то я не селен в перле..
Отправлено: Mog. от 22 Ноября 2002, 08:10:22
Цитировать
как написать, форму закачки

Тут одной формой не обойдёсьси, тут цельный скрипт для закачки нужон. Поскольку, ты верно заметил, что  
Цитировать
сам скрипт выводит каталоги указанные в файле

 Так что читай faq там все расписано.
Название: Подскажите как написать, а то я не селен в перле..
Отправлено: AndyAN от 22 Ноября 2002, 09:01:21
А где хоть сам скрипт закачки хороший или фак для написание его можно найти.. ????
Название: Подскажите как написать, а то я не селен в перле..
Отправлено: Chs от 22 Ноября 2002, 10:05:13
http://forums.webscript.ru/announcement.php?s=&forumid=14#q9.2