Aのホ-ムPから、Bのホ-ムPへ
下記のコ-ドで
print "<A HREF=\"./cgi-bin/photobbns.cgi?mode=disp&no=$abc\">\n";
変数$abcを引数としてリンクで渡しBのホ-ムPで変数$abcを
使用したいのですが、変数$abcが数字の時は使えるのですが
変数$abcが文字の時は使えません、
文字の時も使える方法はありますか。

A 回答 (1件)

受け取り側のCGIでデコードをしていないから


文字列がうまく受け取れないだけなのでは?

http://tohoho.wakusei.ne.jp/wwwcgi3.htm#CgiEncode
    • good
    • 0
この回答へのお礼

有難うございます、
本でデコ-ドを調べるとGETメソッドで送信して
デコ-ドすると書いていました。

お礼日時:2002/01/16 19:05

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

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

Qhttp://***.cgi?key=$keyの部分について

<a href='***.cgi?key=$key'>リンク</A>

とすると、

http://**.cgi?key=*****
というリンクがアドレスバーに表示されて、次のページへ進みますよね。

この、cgiの後の部分(?key=****)を表示しない方法というのはありますか?
POSTでやれば表示されませんが、ボタンばっかりだとすっきりしないので…。

Perlでかいています。

Aベストアンサー

ボタンだとすっきりしないというのが見た目の問題ならば、スタイルシートでボタンをテキストリンク風な表示にすることもできますが、それでは不都合があるでしょうか?
なお、どのようなCGIかはわかりませんが、getで問題ない部分はgetにしておいた方が直接urlを表記したい場合に使い勝手がいい場合もあります。
(例えばgoogleの検索がpostだったら、かなり使い勝手が悪くなりますね。)

QCGIのはじめのコ-ド

#!/usr/local/bin/perl
print "Content-type: text/html\n";
print"\n";
print"$doctype\n";
print"<HTML>\n";
print"<HEAD>\n";
上記のCGIの4行目の print"$doctype\n"; は
なにをしているのですか、宜しくお願いします。

Aベストアンサー

DOCTYPE を宣言してるんでしょう。

$doctype は変数なので、その前に以下のような記述があるはずです。

$doctype = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';

DOCTYPE が何かは参考URLなどを参照してください。

参考URL:http://tohoho.wakusei.ne.jp/html/doctype.htm

QCGI1からCGI2への変数の受け渡しと表示

他のご質問読んでもわからなくて笑
CGIの知識は、書いてあるとおりに設定を変えたりhtmlとか書き出すところの内容変えたり…いらないところに#を付けて、うごくかなぁってドキドキしている程度です(笑)わかりにく。

今回は、まず、キリ番のCGI-Aがあります。そのCGI-Aはキリ番GETしたら登録formが出てきます。登録があったらメールが管理人宛てにくるんです、その時、変数で、フォームで書いてもらった内容+その人の取ったカウント数・時間・エージェント・HOSTが、一緒に記載されてきます。
CGIではこんな感じ↓

print MAIL "時間 : $adate\n";
print MAIL "ホスト: $ahost\n";
print MAIL "使用PC: $kuag\n";
print MAIL "名前 : $aname\n";
print MAIL "カウント : $acount\n";
print MAIL "メール: $email\n";

ってちゃんと送られてきます。
で、この変数なんですが、同ディレクトリにあるメールフォームのCGI-Bに渡して(CGI-Aで登録したら必ずCGI-Bにくると)、CGI-Bが送るメールにも乗せたいのです。CGI-Bのなかのメールの雛型?の部分に
ここです↓
#メール内容
$body.="取得時間 : $adate\n";
$body.="ホスト : $ahost\n";
$body.="使用PC : $auag\n";
$body.="メール : $email\n";
$body.="内容 : $nowdate\n";

内容ってのはCGI-Bのメールフォームに書いてもらったことを表示します。でその上の4つなんですが、それがCGI-Aの変数で、これをCGI-Bのメールに一緒に送らせたいわけです。

そこで、CGI-Aの変数をCGI-Bに持ってくるにはどうするか、素人なりに考えて

#キリ番からの情報取得
require "./CGI-A.cgi";
とか考えて書いてみて、やったんですが、見事に失敗しました。どうすれば変数だけをわたせますか?教えてください。
不適切な表現とかありましたら勘弁してください。
補足など、待ってます。

他のご質問読んでもわからなくて笑
CGIの知識は、書いてあるとおりに設定を変えたりhtmlとか書き出すところの内容変えたり…いらないところに#を付けて、うごくかなぁってドキドキしている程度です(笑)わかりにく。

今回は、まず、キリ番のCGI-Aがあります。そのCGI-Aはキリ番GETしたら登録formが出てきます。登録があったらメールが管理人宛てにくるんです、その時、変数で、フォームで書いてもらった内容+その人の取ったカウント数・時間・エージェント・HOSTが、一緒に記載されてきます。
CGIではこんな...続きを読む

Aベストアンサー

#2です
>ごめんなさい・・・わかるようでまったくわかりません(笑)
のようですので、ピンとくるところがなかったようですね。
それにプログラムの修正個所を完全に書いた訳ではないでの
コピペしても全く動かないです。

で、別の方法です。
質問者さんのしたいことは、
 従来のcgi-aの処理のあと(メールを送った後)
 cgi-bでやっているメール送信も行いたい。
ですよね。

cgi-bの中で、実際にメールを送っている処理部分はどこか解りますか?
その部分をcgi-aに継ぎ足すのはどうでしょう。
当然、送る内容は変数から作っていますから
これにcgi-aの変数をコピーするなり、新たに値を設定してください。
 すなわち
 $body.="取得時間 : $adate\n";
 $body.="ホスト : $ahost\n";
 $body.="使用PC : $auag\n";
 $body.="メール : $email\n";
 $body.="内容 : $nowdate\n";
 の、$adateや、$ahostなどの変数のこと。

cgi-aに継ぎ足す際に、メールを送る処理以外を含めると
正しく動作しない可能性が高いです。
ですから、「この1行は何をしている?」がある程度
理解できないとやっぱり難しいです。

#2です
>ごめんなさい・・・わかるようでまったくわかりません(笑)
のようですので、ピンとくるところがなかったようですね。
それにプログラムの修正個所を完全に書いた訳ではないでの
コピペしても全く動かないです。

で、別の方法です。
質問者さんのしたいことは、
 従来のcgi-aの処理のあと(メールを送った後)
 cgi-bでやっているメール送信も行いたい。
ですよね。

cgi-bの中で、実際にメールを送っている処理部分はどこか解りますか?
その部分をcgi-aに継ぎ足すのはどうでしょう。
...続きを読む

QCGI→CGI変数の引き継ぎはどうするのですか?

初歩的な質問ですがよろしくお願いします。
画面から入力した変数は「GET」などでCGIに値を引き継ぎますが、CGIから別のCGIを起動して最初のCGIでファイルから読み込んだ値や代入された変数を次のCGIに引き継ぐにはどのようにすればよろしいのでしょうか?よろしくお願いします。

Aベストアンサー

CGI→CGIなどのファイル間では
require './xxx.cgi';
を記述しておけば参照可能です。

CGI→HTML(ブラウザ)→CGIなどの場合は
FORMで変数や値を渡します。
隠しフィールドなどを使うとスムーズに変数をCGIへ送信することができます。
<input type=hidden name=変数名 value=値>
※基本的にはGETよりPOSTの方がよいです。理由は省略します

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...
続きを読む


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

おすすめ情報