CGI(Perl)を勉強中の初心者です。
自作のグラフィックカウンターのCGIをHTMLに貼り付けると、
カウンターは表示されるのですが、
HTMLでカウンターより下に配置してある画像が表示されません。(テキストはOK)
CGIを貼るタグは<IMG src=".......cgi>としてあるのですが、
調べてみたところ、このタグ内でwidthとheightの属性を設定しないと
このタグ以下のHTMLが表示されないことがあるとのことで、
属性も設定したのですが、やはり表示されません。
CGIスクリプトそのものに問題があるのでしょうか。
よろしくお願いいたします。

A 回答 (3件)

>このbannerが何かのコマンドだったらしく



確かにUnixにはbannerというコマンドが存在しますが、それでしょうか?
bannerコマンドは、コマンドに続いて指定した文字列を*を使って大きな文字列にして表示してくれるコマンドです。
コマンドラインでお試し下さい。

例:
> banner goo
(>はプロンプトです)

#とりあえず直って良かったですね。(^_^)
    • good
    • 0
この回答へのお礼

naturalさん、再びありがとうございます(^^)
bannnerってそういうコマンドだったんですね。
勉強になりました。
本当、まだまだいろいろ勉強しなくては。
もしまた何かありましたらよろしくお願いいたします m(__)mペコ
(なんて、わがままなこと言ってすみません。)

お礼日時:2001/10/21 00:55

すみません、横から失礼します。


Apacheのコントロールが出来るということはご自分のサーバーですよね?
でしたらコマンドラインでカウンター用CGIの置いてあるディレクトリに移動して、

perl -wc スクリプト名

を実行してみて下さい。
文法エラーがあればこれで判るはずです。
お試し下さい。

この回答への補足

「補足」という形になってしまいましたが、(「補足」しか選べないなんて...)
Ratzielさん、naturalさん、ありがとうございました。
なんとか解決しました。

問題はHTML内にありました。
Apacheを起動してページを表示し、ソースを見てみたところ、
表示されない画像の一つのタグが<IMG src="...">ではなく
<!--......-->と、スクリプトでもないのに勝手に変換されていました。

何度修正してもこのような結果となり、ファイル名が問題では?ということで
色々試してみました。
結果、ファイル名がbanner.pngだったのですが、
このbannerが何かのコマンドだったらしく、
サーバーを通して表示すると上記のように勝手にタグが変換されてしまうようでした。
さらに、このタグ内で設定していた属性値のため、それ以下のタグも崩れてしまい、
他の画像も表示されていなかったようです。
ファイル名を変えてみたところ、無事表示されるようになりました。

お騒がせして申し訳ありませんでした。
また、長々と乱文すみません。
どうもありがとうございました。

補足日時:2001/10/20 06:08
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。
コマンドラインでもやはりエラーは出ませんでした。
カウンターが表示されないというのは良くある話(私もそうでした)ですが、
カウンターが表示される代わりにほかの画像が表示されないなんて...(・・,)グスン
何が原因なのかも良くわからないだけに困ってます。

お礼日時:2001/10/20 01:12

>CGIを貼るタグは<IMG src=".......cgi>としてあるのですが



「"」の閉じ忘れに見えますがどうでしょう?
それともここの書き込みのときにミスっただけでしょうか?

あとwidthとheight属性ですが、IMGタグではこれを指定しないと
サイト全体のダウンロードに時間がかかります。
一応マナーとしては付けるのが当然であると思ってください。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

>「"」の閉じ忘れに

すみません。タイプミスでした。閉じてあります。

現在、Apacheで動作確認しているのですが、
Apacheを起動しないと、カウンター以下の画像は表示され(当然カウンターは表示されませんが)、
Apacheを起動すると、そのカウンター以下の画像は表示されない状況です。

>あとwidthとheight属性ですが、IMGタグではこれを指定しないと
サイト全体のダウンロードに時間がかかります。

そうだったんですね。勉強不足でした。どうもありがとうございました。

お礼日時:2001/10/19 22:10

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

このQ&Aと関連する良く見られている質問

Aベストアンサー

>画像ヘッダとはどういうものでしょうか?

Content-type: image/gif
Content-type: image/png
Content-type: image/jpeg

など、画像タイプごとに決まっています。
<img>タグに普通の画像ファイルが指定されている場合は
Webサーバが画像ファイルの拡張子から判断して返してくれ
ますが、CGIから返されるデータの種類は拡張子からは判断
できないのでCGI内部からヘッダを返す必要があります。


●CGIがPerlの場合で、GIF画像をCGIから返す例
#!/path/to/perl
print "Content-type: image/gif\n\n";
open(GIF, "file.gif");
binmode(GIF); binmode(STDOUT);
print <GIF>; close(GIF);

もちろん、CGIからは画像フォーマットを返せばいいので、
ファイルから読まずにあらかじめCGIソース内に画像データ
を持っておいて出力する方法も可能です。


ちなみに、多くのCGIではHTMLコンテンツを返す場合が多い
ので、ヘッダは以下のようになります。

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

>画像ヘッダとはどういうものでしょうか?

Content-type: image/gif
Content-type: image/png
Content-type: image/jpeg

など、画像タイプごとに決まっています。
<img>タグに普通の画像ファイルが指定されている場合は
Webサーバが画像ファイルの拡張子から判断して返してくれ
ますが、CGIから返されるデータの種類は拡張子からは判断
できないのでCGI内部からヘッダを返す必要があります。


●CGIがPerlの場合で、GIF画像をCGIから返す例
#!/path/to/perl
print "Content-type: image/gif\n\n...
続きを読む

QCGI:HTML表示結果のカスタマイズとタグの隙間

お世話になります。
CGIはフリー配布されているものをわずかに触る程度の初心者で、足りないことを申し上げてしまうと思いますが教えていただけますと嬉しいです。

今、「リンクラリー」というフリー配布のCGIをさわっています。
これをベースにwebスタンプラリー(リンクバナーをスタンプ画像にしたり)として何とか雰囲気だけは近づけたのですが、どうしても表示を思うようにできなかったり、「どうしてこここにこの隙間ができるんだろう…」と自分では解明できない状況が生じました。
CGI配布元様:http://exdreams.net/room/contents/e_lrarry.html

(1)進捗を確認する「user_rarrylist.html」の一覧表を、5列×3行(15マス)として表示したいのですが、<!--START RARRY LIST--><!--END RARRY LIST-->で繰り返し処理(スタンプゲット)を挟むと、次の処理との間に隙間ができてしまいます。
TABLEで背景画像(スタンプシート)とWIDTHを指定していますが、ゲットしたスタンプ(IMG)がずれていきます(背景とうまく重ならない)。
●TDタグ使用→TDタグで15個生成されるため、横に15マスの長い表ができてしまう。

(2)指定したID名にゲットスタンプを放り込む、などという方法は思いついても、実現可能かどうかさえ分かりませんでした。

(2)DIVタグのID属性(名前)を利用して、ボックスの表示・非表示をコントロールすることは可能でしたが、やはり隙間の問題と、思った順番(スタンプA→ボックス1に表示)することができませんでした。

(1)(2)(3)(4)(5)
(6)(7)(8)(9)(11)
(12)(13)(14)(15)(16)
このように「5×3」で番号順に(ゲット順に影響受けず)表示ができればと思っております。
もし可能であれば、教えていただけますと嬉しいです。
よろしくお願いいたします。

お世話になります。
CGIはフリー配布されているものをわずかに触る程度の初心者で、足りないことを申し上げてしまうと思いますが教えていただけますと嬉しいです。

今、「リンクラリー」というフリー配布のCGIをさわっています。
これをベースにwebスタンプラリー(リンクバナーをスタンプ画像にしたり)として何とか雰囲気だけは近づけたのですが、どうしても表示を思うようにできなかったり、「どうしてこここにこの隙間ができるんだろう…」と自分では解明できない状況が生じました。
CGI配布元様:http://exdr...続きを読む

Aベストアンサー

普通にリストとしてマークアップして、スタイルシートでフロートさせれば良いです。
文書の整形のためにtableを使用するのは禁忌でもあるし・・
『単に文書内容を整形する目的だけで表を用いるべきでない。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#h-11.1 )』
『ページレイアウトの目的で表を用いる。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/present/styles.html#h-14.1 )』

 それを、ウィンドウ幅に合わせて伸縮させれば良いです。mediaquery使ってウィンドウ幅で列数を変更することも可能になります。
[例]
<ol id="PartyList">
 <li>内容</li>
 <li>内容</li>
・・・
ol#PartyList,ol#PartyList li{list-style:none;margin:0;padding:position:relative;}
ol#PartyList li{width:19%;float:left;}

普通にリストとしてマークアップして、スタイルシートでフロートさせれば良いです。
文書の整形のためにtableを使用するのは禁忌でもあるし・・
『単に文書内容を整形する目的だけで表を用いるべきでない。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#h-11.1 )』
『ページレイアウトの目的で表を用いる。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/present/styles.html#h-14.1 )』

 それを、ウィンドウ幅に合わせて伸縮させれば良いです。mediaquery使ってウィンド...続きを読む

QCGIの代わりにそこにSSIを使ったHTMLファイル(*.shmtl)を表示

こんにちは。
infoseekのサービスを使ってサイトを作成しています。

インラインフレームの中にCGIを組み込んで使おうと思っているのですが、CGIを表示させると広告が倍に増えてしまい(上下2つだったものが、全部で4つになってしまう)悩んでいます。
infoseekのスタッフの方に問い合わせてみた所、インラインフレーム内のCGI部分の広告を消す事は可能で、規約違反にもならないとの事でしたが、
「CGIの代わりにそこにSSIを使ったHTMLファイル(*.shmtl)を表示させる」というやり方が
どうしてもわからなくて困っています。

CGIについてはまだまだ勉強中で、やっと自分で設置ができるようになった程度のレベルです。
回答どうぞよろしくお願いいたします。

Aベストアンサー

<!--#exec cgi="xx.cgi" -->
こんな感じに置き換えてあげればいいのかな?
SSIの書式で、CGIを呼び出します。
やってみてください。
SSIそのものは、CGIのようにサーバ側で処理を施すのですが、違いは、置き換えという考え方で動くことです。したがって、CGIのように繰り返しなんかはできません。条件分(if文)ぐらいかな?つかえるのは・・

参考まで、こちらを・・。
http://tohoho.wakusei.ne.jp/wwwssi.htm

Q.htaccessを用いて.cgiを.htmlにリダイレクトしたい

.htaccessを用いて.cgiを.htmlにリダイレクトしたい

現在webサイトで以下のようなURLが表示される掲示板を設置しています。

http://hoge.com/bbs1/bbs.cgi?nd=dd&parent=32
http://hoge.com/bbs1/bbs.cgi?nd=dd&parent=500

(最後の数字は10から500くらいまであります)

これを過去ログにするため、html化しました。
http://hoge.com/log1/32.html
http://hoge.com/log1/500.html


しかし以下のような.htaccessを、/bbs1/以下に設置しても、htmlに転送することができません。

RedirectPermanent /bbs1/bbs.cgi?nd=dd&parent=32 "http://hoge.com/log1/32.html"

ちなみに以下のようなhtmlファイル同士の転送はできます。

RedirectPermanent /bbs1/index.html "http://hoge.com/log1/index.html"

301リダイレクトでcgiをhtmlに転送することはできないのでしょうか?
もしおわかりになりましたらご教授いただけますと大変有り難いです。

.htaccessを用いて.cgiを.htmlにリダイレクトしたい

現在webサイトで以下のようなURLが表示される掲示板を設置しています。

http://hoge.com/bbs1/bbs.cgi?nd=dd&parent=32
http://hoge.com/bbs1/bbs.cgi?nd=dd&parent=500

(最後の数字は10から500くらいまであります)

これを過去ログにするため、html化しました。
http://hoge.com/log1/32.html
http://hoge.com/log1/500.html


しかし以下のような.htaccessを、/bbs1/以下に設置しても、htmlに転送することができません。

RedirectPermanent /bbs1/bbs.c...続きを読む

Aベストアンサー

?付けるとquery消えます。

RewriteEngine on
RewriteCond %{QUERY_STRING} ^nd=dd&parent=([0-9]+)$
RewriteRule ^bbs.cgi$ /log1/%1.html? [R=301,L]




http://xn--u8jxb9ib9150b2px.jp/htaccess/rewritequery2.html

QHTMLタグが使えるCGIスクリプト

掲示板のレンタルの中には、本文にHTMLタグが使えるものもありますが、あれはどのような仕組みなのでしょう?

私は今、あるCGIを作成しているのですが(掲示板ではないのですが…)、その本文の欄でHTMLタグが使えるようにしたいのですが、どのようにすればよいのでしょう?
具体的には、<a>タグさえ使えればとりあえず良いのですが…。

よろしくお願いいたします。

Aベストアンサー

スケープの部分を削除すればよいですが、それは大変危険になってしまいます。
例)
<form action='***.cgi'>
<input type=hidden value="前のページで書き込んだもの">
<input type=text name=id><input type=text name=pass><INPUT type="submit"></form>

前のページで書き込んだものが、
「"></form><form action="害のあるスクリプト」と入力すると、

<form action='***.cgi'>
<input type=hidden value=""></form><form action="害のあるスクリプト">
<input type=text name=id><input type=text name=pass><INPUT type="submit"></form>となり偽フォームができてしまいます。

なので、私は、タグを使えるようにするということはお勧めできません

もし、<a>タグが使用したい場合スケープ部分を消してください

スケープの部分を削除すればよいですが、それは大変危険になってしまいます。
例)
<form action='***.cgi'>
<input type=hidden value="前のページで書き込んだもの">
<input type=text name=id><input type=text name=pass><INPUT type="submit"></form>

前のページで書き込んだものが、
「"></form><form action="害のあるスクリプト」と入力すると、

<form action='***.cgi'>
<input type=hidden value=""></form><form action="害のあるスクリプト">
<input type=text name=id><input type=te...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報