Perl вывести рисунок из URL

uncle17

есть картинка по адресу http://ццц.ццц.ццц/картинка.gif. Ее передаем параметром img в скрипт и вставляем на страницу что-то вроде <img src="/cgi-bin/script.pl?img=http://ццц.ццц.ццц/картинка.gif">.
Как скрипт должен выглядеть?

sergey_m

Ты хочешь чтобы твой сайт качал страничку с другого сайта? Это не лучшая идея.

uncle17

да с моего же, в том-то и дело. И не страничку, а картинку стянуть. Просто физически на другой машине лежит

uncle17

В общем, просто считалка баннеров...

use CGI 'param';
my $view_log = 'view.log';
my $click_log = 'click.log';
my $string = $ENV{REMOTE_ADDR} . '(' . $ENV{HTTP_X_FORWARDED_FOR} . ')';
if(param) {
my $img = param('img');
my $url = param('url');

$img = '' if $img !~ /^http/i;
$img = '' if $img !~ /\.gif$/i;

$url = '' if $url !~ /^http/i;

my $filename = '';

if(defined($img {
$filename = $view_log;
$string .= "\t" . 'view=' . $img;
print "Location: $img\n";
}

if(defined($url {
$filename = $click_log;
$url =~ s/_/\?/i;
$string .= "\t" . 'url=' . $url;
print "Location: $url\n";
}

print "Pragma: no-cache\n";
print "Cache-control: no-cache\n\n";

$string .= "\n";
open(FILE, ">> $filename");
print FILE $string;
close FILE;
}

Я так понимаю, что включаться она должна по принципу
<a href="banner.pl?url=мой_урл"><img src="banner.pl?img=урл_баннера"></a>
тогда будут считаться и показы, и клики. Но вот именно <img ...> и не выводится - пишу статический адрес. Клики считаются, на сайт переходится, всё ок. А тут и картинка не показывается, и лог не пишется

Barbie29

федь, заюзай яндекс...
http://genphys.phys.msu.ru/~dmitriyk/perl/lwp.shtml

skvoria

Думается мне, он другое имел в виду.
Перловый скрипт должен тупо вывести контент файла с картинкой, предварив его соответствующим заголовком, типа Content-type: image/gif

uncle17

именно. В РНР это именно тупо и делается. А тут как? "Так же" не предлагать Лучше напишите. Ибо Перл я не учил и особого желания его учить нету. Просто куча скриптов была написана до меня и приходится их немного править

sergey_m

именно. В РНР это именно тупо и делается. А тут как? "Так же" не предлагать Лучше напишите. Ибо Перл я не учил и особого желания его учить нету. Просто куча скриптов была написана до меня и приходится их немного править

Barbie29

да блин, этого добра в инете как грязи просто... даже у меня баннерная система на перле когдато была, топлист к ней со счетчиком прикручивал... проще найти в нете, чем сидеть ждать ответа. И потом, счетчики надо тьолько на сях писать, скрипты они тормозные...

Barbie29

тут также тупо и делается и никто за тебя делать твою работу не будет (всмысле это федечке конешно же)

Sebasten

Может так :

#!/usr/local/bin/perl
use CGI;
my $q = new CGI;
print $q->redirect($q->param('img';

uncle17

ой... а что это делает?

Sebasten

Кажись тоже самое что и тот скрипт, только не пишет логов и не проверяет ошибки, и кэш контрол не добаляет, а так просто присылает перенаправление (302) на адрес картинки

uncle17

но если то же самое, то это проблему не решает, ибо картинка-то не показывается...

Sebasten

Ты попробовал (Только на правильных данных есть одно маленькое отличие, может не показывает из-за него, хотя и врядли?

uncle17

О! Показал! Спасиб, как говорится

Sebasten

De nada

Sebasten

В тот скрипт можно добавить строчку перед всеми заголовками, тоже должен заработать
print "Status: 302 Moved\n";
Оставить комментарий
Имя или ник:
Комментарий: