Forum Webscript.Ru

Программирование => Perl => Тема начата: aner от 27 Февраля 2004, 18:38:31

Название: фон таблицы
Отправлено: aner от 27 Февраля 2004, 18:38:31
Возможно ли, чтоб он задавался скриптом?
К примеру, есть cgi-скрипт, выводящий случайную картинку. Возможно ли ссылаться на него таким образом:

Подозреваю, что не будет работать...
Однако, есть ли способ динамически управлять графическим фоном таблицы?
Название: фон таблицы
Отправлено: NeoNox от 27 Февраля 2004, 19:24:45
aner а проверить никак не можеш?
Название: фон таблицы
Отправлено: aner от 28 Февраля 2004, 04:55:46
проверял, не работает...
однако вопрос, колторый я задал, несколько шире...
Название: фон таблицы
Отправлено: Phoinix от 28 Февраля 2004, 09:35:22
aner
Цитировать
однако вопрос, колторый я задал, несколько шире...


Насчет широты твоего вопроса, как я понял, нам нужно догадываться самим?

Прочитай документацию по SSI...

>

но это не совсем корректно, правильней выводить всю таблицу скриптом, а не только цвета...
Название: фон таблицы
Отправлено: Billi от 28 Февраля 2004, 10:45:07
В скрипте надо на входной поток binmode ставить, без него
работать не будет, а так делаеш ссылку на скрипт как на картинку.
P/S Данный вопрос сдесь уже обсуждался не так давно
Название: фон таблицы
Отправлено: aner от 28 Февраля 2004, 16:11:04
>

ИМХО бред
хотел бы я знать, какой броузер способен читать такой код!

что касается binmode на входной поток - похоже, в этом как раз и загвоздка, почему броузер не выводит скрипт как обычную картинку, заданную как фон таблицы, в то время как выводит ее при обычной SSI-ссылке.

Подскажите, какой командой задается binmode, я поэкспериментирую...
Название: фон таблицы
Отправлено: AliMamed от 28 Февраля 2004, 16:42:36
aner пойди ка отсюда почитай что-нибудь про то, что такое скрипты, выполняющиеся на стороне сервера, какие они бывают и что от них получает браузер.
а то накросспостил своего бреда по всему форуму и еще тут имхи свои направоналево
Название: фон таблицы
Отправлено: Phoinix от 28 Февраля 2004, 19:59:27
Billi

Цитировать
В скрипте надо на входной поток binmode ставить, без него работать не будет, а так делаеш ссылку на скрипт как на картинку


Интересно, а как ты представляешь таким макаром менять динамично бекграунд таблицы?

aner

Цитировать
что касается binmode на входной поток - похоже, в этом как раз и загвоздка, почему броузер не выводит скрипт как обычную картинку, заданную как фон таблицы, в то время как выводит ее при обычной SSI-ссылке.

Подскажите, какой командой задается binmode, я поэкспериментирую...


Вот это точно бред, но если тебе станет легче:

binmode STDOUT;

Но я бы все же рекомендовал почитать про SSI... и как заметил AliMamed про скрипты тоже...

P.S. ммм... а и еще непоплохо было бы почитать про HTML, а то я что-то на помню, что бы HTML принимал цвет как фон, или фон как цвет...
Название: фон таблицы
Отправлено: aner от 28 Февраля 2004, 22:43:56
да что ж такое!
где я писал про фон как цвет? и цвет как фон?
и отчего здесь такие все любезные то?
я же сформулировал задачу достаточно четко: нужно динамически менять бэкгроунд таблицы. В ответ едва ли не каждый предложил свой вариант кода, не потрудившись удостовериться, будет ли это работать. Это сделал я. Не работает.
Да, я не профессиональный программер, но что есть SSI и cgi-скрипты знаю вполне. Зачем уж так на понижение играть!..
По крайней мере, моих знаний хватило, чтоб сделать скрипт, выводящий случ. картинку из каталога с графикой.
Если тема никому не интересна, давайте ее закроем. Но мне кажется, это полезная фича в вэб-дизайне, иметь под рукой возможность делать динамически обновлющимся фон страницы.
Название: фон таблицы
Отправлено: AliMamed от 29 Февраля 2004, 11:29:41
Цитировать
aner:
>

ИМХО бред
хотел бы я знать, какой броузер способен читать такой код!

Цитировать
aner:
но что есть SSI и cgi-скрипты знаю вполне.


нет. не знаешь. или сервер от браузера отличить не можешь
Название: фон таблицы
Отправлено: Phoinix от 29 Февраля 2004, 16:28:52
aner

Цитировать
В ответ едва ли не каждый предложил свой вариант кода, не потрудившись удостовериться, будет ли это работать. Это сделал я. Не работает.

Во-первых тебе никто предлагать готовые коды здесь не обязан, и кстати никто и не предложил, здесь только направляют на пути решения;

Во-вторых:
Цитировать
проверял, не работает...
однако вопрос, колторый я задал, несколько шире...

Не ответ. Ты даже не удосужился узнать почему он не работает, посто попробовал и все... здесь форум по Perl а не по HTML, где твой готовый код script.cgi?

В-третьих, зато свое решения я проверял, и оно работает, и еще раз повторяю, что подстановка таким образом динамичной ссылки на изображение возможно, но данное решение не совсем корректно, т.к. запускать скрипт ради получения всего-лишь ссылки на изображение - нецелесообразно, хочешь получить динамичную таблицу, выдавай её полностью скриптом;

В-четвертых, можно выводить изображение используя HTML код который ты привел, но при этом ты сможешь вывести всего лишь одну картинку, ты не сможешь передать этому скрипту переменные окружения. Хотя, в принципе, возможно передавать их через какие-нибудь временные файлы, но это лишний гемморой и загрузка сервера.
Название: фон таблицы
Отправлено: aner от 29 Февраля 2004, 16:48:58
вобщем, я разобрался...
> будет работать только в том случае, если Content-type будет: image/gif\\n\\n";
Тема закрыта.
Благодарить некого.
Название: фон таблицы
Отправлено: Phoinix от 29 Февраля 2004, 16:54:12
aner

Неправильно!
Так работать не будет!
Ты бы еще binmode сюда приплел!
Покажи свой скрипт, точнее его часть отвечающую за вывод изображения!

Ответ по теме еще не дан!
Название: фон таблицы
Отправлено: Wyclef от 29 Февраля 2004, 17:06:13
aner
На счет SSI ты не прав и зря обижаешься.

Смотри:
- должен быть путь до картинки.
/cgi-bin/script.cgi - у тебя выводит случайную картинку (переделай его, чтобы он выводил путь до случайной картинки).

Вызывать можно так:

[i]
[i]">



&_nbsp;
[/i]


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

Про image/gif тоже зря :)

--- например script.cgi
#!/usr/bin/perl
print "Content-type:text/plain\\n\\n";
print "/img/random_image.gif";
Название: фон таблицы
Отправлено: Phoinix от 29 Февраля 2004, 17:07:55
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;
Название: фон таблицы
Отправлено: aner от 01 Марта 2004, 05:46:25
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);

и ссылаюсь на скрипт, как говорил:

За примеры спасибо.
Название: фон таблицы
Отправлено: NeoNox от 01 Марта 2004, 11:16:40
Немного оптимизируем:
opendir(DIR,"$imagedir") || die "Can\'t open folder $imagedir: $!";
@images=grep(/\\.(gif|jpg)$/,readdir(DIR));
closedir(DIR);
нефиг нам дублировать информацию.
Название: фон таблицы
Отправлено: aner от 01 Марта 2004, 18:54:05
приведенный выше скрипт, в зависимости от того,
в каком порядке идут строчки:
@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)); должна выправить дело.

согласен, дублировать информацию нефиг.