プロが教えるわが家の防犯対策術!

Perl-CGIを利用しています。

今はa.cgi

print "<meta http-equiv='Refresh'content='0;URL=b.cgi?\n\n'>";

これにa.cgiで取得した$strをb.cgi側で利用したいのですがうまく引っ張っていくことができません。
どうしたらよいでしょうか・・・

A 回答 (2件)

あ、このあいだの質問 (Spreadsheet::WriteExcel) のやつの続きですね。



<META> タグで出すのもいいですが、CGI ならヘッダで出してもいいんじゃないですか?
# ちなみに <META> タグで出すなら、content 内に \n\n はいらないです
---
print "Refresh: 0; url=b.cgi?$str\n";
print "Content-Type: text/html\n\n";
print '<html><body>';
print '<br><br>';
print '<table align = "center">';
print '<tr>';
print '<td><font size = 5 ; color = blue>';
print "EXCEL書き出し";
print '</font></td>';
print '</tr>';
print '</table>';
print '</body></html>';
---

これで、例えば a.cgi での $str の値が "abcdefg" だったら b.cgi では $ENV{QUERY_STRING} に "abcdefg" という値が入ります。
要するに "?" マークの後ろが $ENV{QUERY_STRING} に入ってきます。

print "Refresh: 0; url=b.cgi?str=$str\n";

とした場合は $ENV{QUERY_STRING} は "str=abcdefg" になります。
渡すパラメタが一つしかないのならどっちにするかは好みの問題ですがね。

(オマケ)
print "Refresh: 0; url=b.cgi/$str/\n";

とすると、URL 部は http://your.domain/cgi-bin/b.cgi/abcdefg/ になりますが、$ENV{PATH_INFO} には "/abcdefg/" が入るので、こういう方法も使えます。
    • good
    • 0
この回答へのお礼

早速の回答有難うございます。
ほんとたびたびお世話になります。
今日も無事解決しました。

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

お礼日時:2002/10/16 16:20

> a.cgiで取得した$strをb.cgi側で利用したいのですがうまく引っ張っていくことができません



URLにパラメータをつけたい、ということでしょうか?

print "<meta http-equiv='Refresh'content='0;URL=b.cgi?str=$str\n\n'>";
または、cgi→cgiなら
Location: "b.cgi?str=$str\n\n";
でもよいかもです。
    • good
    • 0
この回答へのお礼

早速の回答有難うございます。

初歩的な質問でしたね・・・申し訳ございません。

お礼日時:2002/10/16 16:18

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