【お題】NEW演歌

カウンター画像の素材配布/サンプルページ(カウントはしない)を製作しています。

http://cgi-design.net/cont/study/study.cgi?mode= …
を参考にtest.cgi(=sample28.cgi)を作成し、以下のようにアップロードしました。

aディレクトリ
├index.html
├test.cgi
├gifcat.pl
├b(0.gif~9.gif)
└c(0.gif~9.gif)

index.htmlに<img src="test.cgi&id=b">といった感じに記述し、bディレクトリの10個の連結画像(0123456789)、同じく<img src="test.cgi&id=c">でcディレクトリの連結画像を表示させたいのですが、test.cgiの改造のしかたがさっぱり解らずにいます。

実際のサンプル画像ディレクトリは50以上あるので、どうにか再現できないかな…と思っています。助言頂けると助かります。宜しくお願い致します。

A 回答 (7件)

http://hogehoge.ne.jp/test.cgi&id=b
で直接アクセスした場合なのですが、404エラーとなりました;。

え?
あの、それってファイルが存在しないってことですよ?
もちろん、
http://hogehoge.ne.jp/
はご自身のURLにしてますよね。。。当然。。。
これが表示されなければ話になりません。。。
.htaccess
使おうが表示されませんよ。。。

この回答への補足

http://hogehoge.ne.jp/
は勿論、自サイトのアドレスにしています。

http://hogehoge.ne.jp/test.cgi&id=b

http://hogehoge.ne.jp/b/0.gif(0~9.gif)
は、同一の画像と考えていいんですよね?

http://hogehoge.ne.jp/b/0.gifは表示されています。
.htaccessでアクセス制限もしていません。

補足日時:2006/05/12 00:25
    • good
    • 0
この回答へのお礼

<img src="test.cgi&id=b">
だと思っていたのですが
<img src="test.cgi?id=b">
だったんですね…。

無事表示されました。
何度も御手数をおかけしてすみませんでした。

お礼日時:2006/05/12 00:39

http://hogehoge.ne.jp/test.cgi&id=b

http://hogehoge.ne.jp/b/0.gif(0~9.gif)
は、同一の画像と考えていいんですよね?

ええ、だいたいそういうことなんです。

#!/usr/bin/perl
require 'gifcat.pl';
use CGI;
my $q=new CGI;
my $id=$q->param('id');
print "Content-type: image/gif\n\n";
$count = 1234567890;
foreach (0 .. 9) {
$img = substr($count,$_,1);
push (@img,"$id/$img.gif");
}
binmode(STDOUT);
print &gifcat'gifcat(@img);
exit;

は基本的にそういうことやってるんです。
push (@img,"$id/$img.gif");
はidで指定されるディレクトリ以下の0.gif~9.gif
をgifcatで連結する画像データとして使えって指示です。
で、じっさい私の場合は表示されるんですよね。

うーん、なんでうまくいかないかはもう私にはちょっと分からないです。
    • good
    • 0

<img src="test.cgi?id=b"><img src="test.cgi?id=c">


すみません。やっぱり、上でもできました。
何がわるかったんだろ?
    • good
    • 0

すみません。

わたしも
表示されたのは
http://hogehoge.ne.jp/test.cgi&id=b
と直接URLを打ち込んだばあいで、
<img src="test.cgi&id=b">
のようにしたら表示されませんでした。

imgタグではQUERYを送れないのでしょうかね?よくわかりません。

1つの解決策としては、
もし、サーバーにapacheをつかっていて、mod_rewriteが使えるなら、
index.html等と同じディレクトリに

RewriteEngine on
RewriteRule test_([0-9A-Za-z]).cgi /test.cgi?id=$1

という内容の、
.htaccess
という名前のファイルをつくって、
<img src="test_b.cgi">
<img src="test_c.cgi">
のように呼び出すとよいとおもいます。私はこれで表示されました。

.htaccessは
test_xxx.cgiをtest.cgi?id=xxx
に内部で飛ばすようにしてます。
xxxはa~z,A~Z,0~9
で書けてればなんでもいいです。文字数も何文字でもいいです。

もっと安直には、呼び出すファイルごとに
test_b.cgi, test_c.cgiなどをを別々につくって、それぞれsample28.cgiで
push (@img,"$img.gif")→push (@img,"b/$img.gif")
push (@img,"$img.gif")→push (@img,"c/$img.gif")
とだけ変えればいいです。
ただ、このやり方では50ことかつくるのは大変です。
はじめのやり方なら、test.cgiは1こでよいです。

この回答への補足

http://hogehoge.ne.jp/test.cgi&id=b
で直接アクセスした場合なのですが、404エラーとなりました;。
http://hogehoge.ne.jp/b/1.gifでは画像表示されるのですが…。

>もし、サーバーにapacheをつかっていて、mod_rewriteが使えるなら、
確か、使えるサーバーだったかと思います(調べておきます)。

補足日時:2006/05/11 23:34
    • good
    • 0

aディレクトリ


├index.html
├test.cgi
├gifcat.pl
├b(0.gif~9.gif)
└c(0.gif~9.gif)
b、c、ディレクトリ以下の0.gif~9.gifは、
テストとして、sample28.cgiできちんと表示されたものにしてみて下さい。
test.cgiのパーミッションは大丈夫ですよね?
うちで実験したら以下できちんと表示されましたよ。

#!/usr/bin/perl
require 'gifcat.pl';
use CGI;
my $q=new CGI;
my $id=$q->param('id');
print "Content-type: image/gif\n\n";
$count = 1234567890;
foreach (0 .. 9) {
$img = substr($count,$_,1);
push (@img,"$id/$img.gif");
}
binmode(STDOUT);
print &gifcat'gifcat(@img);
exit;

この回答への補足

何度もすみません。

>テストとして、sample28.cgiできちんと表示されたものにしてみて下さい。
念のため、直接画像(b/0.gif)にアクセス→正常に表示されています
キャッシュクリアもしてみました。

>test.cgiのパーミッションは大丈夫ですよね?
アスキーで転送、755にしています。
gifcat.plは644、bフォルダは777です。

>うちで実験したら以下できちんと表示されましたよ
test.cgiを書き換えましたが、やはり表示されませんでした。

画像の呼び出し方は
<img src="test.cgi&id=b">
<img src="test.cgi&id=c">
で良いのでしょうか?

使用している環境がMacなのですが…問題ないでしょうか?

補足日時:2006/05/11 22:02
    • good
    • 0

そこでもいいですけど、


普通は
require 'gifcat.pl';
の直後にいれますね。

そもそも、何も改造してない状態で表示されますか?
その時点でダメなんてことはないですよね?

この回答への補足

#!/usr/bin/perl
require 'gifcat.pl';
use CGI;
my $q=new CGI;
my $id=$q->param('id');
print "Content-type: image/gif\n\n";
$count = 1234567890;
foreach (0 .. 9) {
$img = substr($count,$_,1);
push (@img,"$id/$img.gif");
}
binmode(STDOUT);
print &gifcat'gifcat(@img);
exit;

としてみましたが、やはり表示されませんでした。

aディレクトリ
├index.html
├sample28.cgi
├gifcat.pl
└0.gif~9.gif
の階層でindex.htmlに<img src="sample28.cgi">と書いてアクセスしましたら、正常に連結画像が表示されています。

補足日時:2006/05/11 20:10
    • good
    • 0

sample28.cgiだと、gif画像は同じディレクトリに


ないといけないようですね。

use CGI;
my $q=new CGI;
my $id=$q->param('id');

とでもしておいて、
($ENV{QUERY_STRING}からidとれればなんでもいんですが。)

push (@img,"$img.gif");

push (@img,"$id/$img.gif");

とすればよいでしょう。たぶん。

この回答への補足

回答ありがとうございました。

初歩的で申し訳ないのですが…
use CGI;
my $q=new CGI;
my $id=$q->param('id');
はどこに差し込めば良いのでしょうか;

#!/usr/bin/perl
require 'gifcat.pl';
print "Content-type: image/gif\n\n";
$count = 1234567890;
use CGI;
my $q=new CGI;
my $id=$q->param('id');
foreach (0 .. 9) {
$img = substr($count,$_,1);
push (@img,"$id/$img.gif");
}
binmode(STDOUT);
print &gifcat'gifcat(@img);
exit;

にして
index.htmlに<img src="test.cgi&id=b"><img src="test.cgi&id=c">と書いて表示させてみたのですが、連結画像は表示されませんでした。
すみません、宜しくお願い致します。

補足日時:2006/05/11 09:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報