プロが教える店舗&オフィスのセキュリティ対策術

perlのcgi製作を始めて7日目の素人で恐縮ですが、教えてください。

タイトルのキーワードで検索し、いろいろ試しておりますがうまく動作しません。
■試した例
exec("./cgi A.cgi")
<!--#exec cgi="./cgi A.cgi"-->

もともと単体で動作していたcgi Aに対して新たにcgi Bを作成し、
cgi Bからcgi Aを呼び出したいのですが、うまくいきません。
 cgi A:アンケート回答フォームのようなもの
 cgi B:認証フォーム(コードを入力してDB内のデータと一致したらcgi Aを呼び出したい)

自分のPCにApacheをインストールし、ローカルで実行しております。
cgi Bはcgi Aを呼び出す部分をコメントアウトすれば動作します。

どなたか良きアドバイスをよろしくお願いします。

A 回答 (2件)

> exec("./cgi A.cgi")


> <!--#exec cgi="./cgi A.cgi"-->

これ、何を意図したものですか? ./cgi ってなんです?
この書式だと、 ./cgi(カレントディレクリのcgiというコマンド)に A.cgi を引数にして実行しようとします。おそらく、cgiなんて実行ファイルや命令は無いでしょうから失敗するでしょう。


方法としては次のものが考えられます。

・正しく A.cgi を実行する
PCでApache使ったことないので、どうなるか確認取ってませんが、 A.cgi が単独で実行できるなら
exec("A.cgi") ;
あるいは、Perlコマンドを指定して
exec("perl A.cgi") ;
A.cgiにパラメータを渡すなら、仕様にしたがって。

あと、httpのヘッダが重複しないように注意。


・ location や refresh を使って、 A.cgiのURLへリダイレクトする。

この回答への補足

記述がへたくそですみません。

ご認識通り正しくはexec("A.cgi") ;です。パラメタは無しです。
単純にA.cgiに制御を渡したいのみです。

具体的にはexec("./test.cgi");と記述しておりましたが、
試しにexec("test.cgi");で実行したところ、
IEが待機中のまま返ってこなくなりました。

あと、
>httpのヘッダが重複しないように注意。
>・ location や refresh を使って、 A.cgiのURLへリダイレクトする。
この点を掘り下げて教えていただけると幸いです。

宜しくお願いします。

補足日時:2011/01/26 14:24
    • good
    • 0
この回答へのお礼

コメントありがとうございました。
リダイレクトというキーワードで新たな知識を得ることが出来ました。
また、状況に変化があったので新たな質問を立てさせていただきました。

お礼日時:2011/01/27 10:55

system('A.cgi');


または
`A.cgi`;

このことでしょうか?

HTML、CGI、Perl、SSIはそれぞれ別物ですから、
それぞれの区別を付けて置いた方が良いです。

この回答への補足

記述がへたくそですみません。
ご推測の通りです。

何かアドバイスを頂けると幸いです。
宜しくお願いします。

補足日時:2011/01/26 14:27
    • good
    • 0
この回答へのお礼

コメントありがとうございました。
状況に変化があったので新たな質問を立てさせていただきました。

お礼日時:2011/01/27 10:53

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