Forum Webscript.Ru
Программирование => Perl => Тема начата: aner от 27 Февраля 2004, 18:38:31
-
Возможно ли, чтоб он задавался скриптом?
К примеру, есть cgi-скрипт, выводящий случайную картинку. Возможно ли ссылаться на него таким образом:
Подозреваю, что не будет работать...
Однако, есть ли способ динамически управлять графическим фоном таблицы?
-
aner а проверить никак не можеш?
-
проверял, не работает...
однако вопрос, колторый я задал, несколько шире...
-
aner
однако вопрос, колторый я задал, несколько шире...
Насчет широты твоего вопроса, как я понял, нам нужно догадываться самим?
Прочитай документацию по SSI...
>
но это не совсем корректно, правильней выводить всю таблицу скриптом, а не только цвета...
-
В скрипте надо на входной поток binmode ставить, без него
работать не будет, а так делаеш ссылку на скрипт как на картинку.
P/S Данный вопрос сдесь уже обсуждался не так давно
-
>
ИМХО бред
хотел бы я знать, какой броузер способен читать такой код!
что касается binmode на входной поток - похоже, в этом как раз и загвоздка, почему броузер не выводит скрипт как обычную картинку, заданную как фон таблицы, в то время как выводит ее при обычной SSI-ссылке.
Подскажите, какой командой задается binmode, я поэкспериментирую...
-
aner пойди ка отсюда почитай что-нибудь про то, что такое скрипты, выполняющиеся на стороне сервера, какие они бывают и что от них получает браузер.
а то накросспостил своего бреда по всему форуму и еще тут имхи свои направоналево
-
Billi
В скрипте надо на входной поток binmode ставить, без него работать не будет, а так делаеш ссылку на скрипт как на картинку
Интересно, а как ты представляешь таким макаром менять динамично бекграунд таблицы?
aner
что касается binmode на входной поток - похоже, в этом как раз и загвоздка, почему броузер не выводит скрипт как обычную картинку, заданную как фон таблицы, в то время как выводит ее при обычной SSI-ссылке.
Подскажите, какой командой задается binmode, я поэкспериментирую...
Вот это точно бред, но если тебе станет легче:
binmode STDOUT;
Но я бы все же рекомендовал почитать про SSI... и как заметил AliMamed про скрипты тоже...
P.S. ммм... а и еще непоплохо было бы почитать про HTML, а то я что-то на помню, что бы HTML принимал цвет как фон, или фон как цвет...
-
да что ж такое!
где я писал про фон как цвет? и цвет как фон?
и отчего здесь такие все любезные то?
я же сформулировал задачу достаточно четко: нужно динамически менять бэкгроунд таблицы. В ответ едва ли не каждый предложил свой вариант кода, не потрудившись удостовериться, будет ли это работать. Это сделал я. Не работает.
Да, я не профессиональный программер, но что есть SSI и cgi-скрипты знаю вполне. Зачем уж так на понижение играть!..
По крайней мере, моих знаний хватило, чтоб сделать скрипт, выводящий случ. картинку из каталога с графикой.
Если тема никому не интересна, давайте ее закроем. Но мне кажется, это полезная фича в вэб-дизайне, иметь под рукой возможность делать динамически обновлющимся фон страницы.
-
aner:
>
ИМХО бред
хотел бы я знать, какой броузер способен читать такой код!
aner:
но что есть SSI и cgi-скрипты знаю вполне.
нет. не знаешь. или сервер от браузера отличить не можешь
-
aner
В ответ едва ли не каждый предложил свой вариант кода, не потрудившись удостовериться, будет ли это работать. Это сделал я. Не работает.
Во-первых тебе никто предлагать готовые коды здесь не обязан, и кстати никто и не предложил, здесь только направляют на пути решения;
Во-вторых:
проверял, не работает...
однако вопрос, колторый я задал, несколько шире...
Не ответ. Ты даже не удосужился узнать почему он не работает, посто попробовал и все... здесь форум по Perl а не по HTML, где твой готовый код script.cgi?
В-третьих, зато свое решения я проверял, и оно работает, и еще раз повторяю, что подстановка таким образом динамичной ссылки на изображение возможно, но данное решение не совсем корректно, т.к. запускать скрипт ради получения всего-лишь ссылки на изображение - нецелесообразно, хочешь получить динамичную таблицу, выдавай её полностью скриптом;
В-четвертых, можно выводить изображение используя HTML код который ты привел, но при этом ты сможешь вывести всего лишь одну картинку, ты не сможешь передать этому скрипту переменные окружения. Хотя, в принципе, возможно передавать их через какие-нибудь временные файлы, но это лишний гемморой и загрузка сервера.
-
вобщем, я разобрался...
> будет работать только в том случае, если Content-type будет: image/gif\\n\\n";
Тема закрыта.
Благодарить некого.
-
aner
Неправильно!
Так работать не будет!
Ты бы еще binmode сюда приплел!
Покажи свой скрипт, точнее его часть отвечающую за вывод изображения!
Ответ по теме еще не дан!
-
aner
На счет SSI ты не прав и зря обижаешься.
Смотри:
- должен быть путь до картинки.
/cgi-bin/script.cgi - у тебя выводит случайную картинку (переделай его, чтобы он выводил путь до случайной картинки).
Вызывать можно так:
[i][/i]
При каждом вызове страницы с таким кодом будет получаться таблица со случайным бэкграундом. Если нужно менять бэкграунд после загрузки страницы, то надо использовать Javascript.
Про image/gif тоже зря :)
--- например script.cgi
#!/usr/bin/perl
print "Content-type:text/plain\\n\\n";
print "/img/random_image.gif";
-
aner
Пища для размышления:
-----------------------------------------------
">
script.pl
#!/usr/bin/perl -w
use strict;
use CGI;
my $query = new CGI;
my $param = ($query -> param(\'bg\'))?($query -> param(\'bg\')):\'/img/img0.jpg\';
if ($param eq \'bg1\') {$param = \'/img/img1.jpg\'}
if ($param eq \'bg2\') {$param = \'/img/img2.jpg\'}
if ($param eq \'bg3\') {$param = \'/img/img3.jpg\'}
print "Content-type: text/html; charset=windows-1251\\n\\n";
print qq "$param";
exit;
-----------------------------------------------
script.pl
#!/usr/bin/perl -w
use strict;
my $file = \'/var/www/sites/test/html/img/img0.jpg\';
print "Content-type: image/jpeg\\n\\n";
open (IMG, "$file");
binmode(IMG); binmode(STDOUT);
while(read(IMG, my $buff, 1024)){print STDOUT $buff;}
close IMG;
exit;
-
2phoinix -
да заработало у меня еще вчера в таком вот виде:
require "image.config"; #это файл, где прописаны пути к каталогу с картинками
opendir(DIR,"$imagedir");
@gif=grep(/gif\\Z/,readdir(DIR));
@jpg=grep(/jpg\\Z/,readdir(DIR));
push(@images,@gif);
push(@images,@jpg);
closedir(DIR);
srand();
$SIZE=@images;
$randnum=int rand $SIZE;
print "Content-type: image/gif\\n\\n";
$image="$imageurl/$images[$randnum]";
print qq($image\\n);
и ссылаюсь на скрипт, как говорил:
За примеры спасибо.
-
Немного оптимизируем:
opendir(DIR,"$imagedir") || die "Can\'t open folder $imagedir: $!";
@images=grep(/\\.(gif|jpg)$/,readdir(DIR));
closedir(DIR);
нефиг нам дублировать информацию.
-
приведенный выше скрипт, в зависимости от того,
в каком порядке идут строчки:
@gif=grep(/gif\\Z/,readdir(DIR));
@jpg=grep(/jpg\\Z/,readdir(DIR));
push(@images,@gif);
push(@images,@jpg);
выдает только gif-файлы из папки, не замечая, jpg, или наоборот, только jpg...
строчка @images=grep(/\\.(gif|jpg)$/,readdir(DIR)); должна выправить дело.
согласен, дублировать информацию нефиг.