公式アカウントからの投稿が始まります

画像掲示板を改造しようとしていますが、分かりません。
よろしくお願い致します。

元の画像掲示板をmoto.cgiとします。
そこに投稿された画像のURLは、$gazo_urlという変数になっています。

別のCGIをbetu.cgiとすると、
betu.cgiに画像を表示させるには、どうしたらいいのでしょうか?
betu.cgiに↓こんなふうに書いても全然ダメでした。
<IMG SRC="$gazo_url" BORDER="0" >

ド素人ですいません。
よろしく教えてください。

A 回答 (2件)

No.1です。



> > <IMG SRC="$gazo_url" BORDER="0" >
>
> って考えたって事は。。。
> betu.cgiの中で、上記の記述以前に変数$gazo_urlを使っているのですか?その場合、変数の中身はどうなっていますか?
> イメージタグではなく、単に$gazo_urlの中身を画面に表示するようにするとどうなっていますか?
>
> 何にも入っていません。nullです。

 なるほど。
 moto.cgiからbetu.cgiへ画面を経由してmoto.cgiの中で使用している変数$gazo_urlの値を渡していないことがハッキリしました。
 で、渡す方法は先に書いた方法が基本です。
 ブラウザからサーバーへブラウザの画面上で入力された値(テキストフィールドにキーボード入力した値やラジオボタンで選択した値)を渡す方法にGETのパラメータとPUTのパラメータがあるのはご存知ですね?
 URLの後ろに /?hensu=1 といった感じに「変数=変数値」を付けて渡すのがGET。画面のHTML内にFORMを設け、その中の変数を使って渡すのがPUT。
 先に書いたのはmoto.cgiが、送出する(生成すると言った方が感覚的に分かりやすいか?)HTMLの中にFORMを設け、その中にtype="hidden"の変数を定義してこれにbetu.cgiが期待するファイル名なりbetu.cgiから見たファイルの相対パス(または絶対パス)を入れればよいということです。

 こういう説明でわかるでしょうか?

 Javaだと一連の画面遷移で何か一つの処理をしようとする場合、最初のログインなり、ログインが無ければ動き始めの画面を送出するプログラムがセッションを定義すれば、後のプログラムはこのセッションを使って後続のプログラムに変数値を渡せるのですが、セッションを使えない場合は画面を経由して渡すしか方法はありません。
 いろんなものを画面経由で渡すのはわずらわしいですしブラウ側で表示中の画面のHTMLを見るとわかるので、あからさまにあるとカッコ悪いだけでなくセキュリティー上も好ましくありません。
 なので、動作中の利用者の識別子だけを画面経由で持ちまわすようにし、サーバー側では何らかの方法でその識別子を使って必用な情報を得るようにするのが好ましいです。例えばデータベース上のあるテーブルに後発プログラムで必用な値を保持するとか。
 その場合の問題はそのテーブルの当該レコードを何時誰が消して綺麗にするかです。ある利用者は最後の画面まで行かないうちに途中で操作をやめてしまう場合もあるでしょうし。
 そういったことも考えながら設計されるとよいでしょう。
    • good
    • 0
この回答へのお礼

zircon3さん
私のようなド素人に丁寧に教えていただき感謝しています。
教えていただいたようにformでhiddenでやろうと思います。
とりあえず、やってみましたが、送り出しはいいように思いますが、betu.cgiでの引き出しがうまくいかない感じです。

いま、とりあえず、formのお勉強をしています。
よく分かりませんが、CGI.pmを使おうと思っています。

ありがとうございました。みちしるべが出来ました。

お礼日時:2015/09/20 16:15

処理の流れは以下のような感じなのでしょうか?


プログラムの拡張子が.cgiってことは開発言語はJava以外?
サーバ上でセッション・オブジェクトとかは使えない?

(1) サーバー上のmoto.cgiで件の画像を含む画面を表示
(2) 表示した画面でOKボタン等を押すとサーバー上のbetu.cgiが動作
(3) betu.cgiで件の画像を含む別の画面を表示

もしそうなのでしたらmoto.cgiの中で使っている変数を、全く別のタイミングで動くbetu.cgiで使うことは出来ません。betu.cgiの中で$gazo_urlという変数名を用いても、それはあくまでもbetu.cgiの中で独自に定義した変数であって、moto.cgiとは全く関係有りません。
なのでmoto.cgiからbetu.cgiに何か値を渡したいのであれば、(1)で送出するHTMLの中に匿名変数でその値を持ち、(2)でブラウザからサーバーへPutのパラメータで渡すといったことをしなければなりません。

しかし。。。

> <IMG SRC="$gazo_url" BORDER="0" >

って考えたって事は。。。
betu.cgiの中で、上記の記述以前に変数$gazo_urlを使っているのですか?その場合、変数の中身はどうなっていますか?
イメージタグではなく、単に$gazo_urlの中身を画面に表示するようにするとどうなっていますか?
    • good
    • 0
この回答へのお礼

早々のご回答をありがとうございます。
自分ながらド素人のためお恥ずかしいしだいです。

Perlです。
<A HREF="betu.cgi?gazo=$gazo_url・・・・
とか、そんな感じでできないでしょうか?

>イメージタグではなく、単に$gazo_urlの中身を画面に表示するようにするとどうなっていますか?

何にも入っていません。nullです。

お礼日時:2015/09/20 13:55

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