- 締切済み
アンケートフォームなどの送信ボタンを押すとソースコードが表示されてしま
アンケートフォームなどの送信ボタンを押すとソースコードが表示されてしまいます。 初めまして、CGI初心者です。 色々な場所で調べてみた結果、いまいち明瞭な答えにたどりつかなかったので、 質問いたしました。 現在、WindowsXPにて、Perl(ver5.10.1)を使用したCGIを作ろうと思っています。 その中で、フォーム内容を記述して送信を押した場合に次のページに飛んだときに、 cgiのソースコードが表示される状態になってしまいます。 動作確認には、Apache2.2を使用しております。 例えば、単純にフォームに入力したものを次のCGIで表示するものを作った場合、 (sample_form.html) <form action=print.cgi target=_blank method=get> <input size=70 type=text name="input" value="sample text"> <input type=submit value="送信"> </form> は、正常にフォームが表示されますが、送信を押した場合に (print.cgi) #!/perl/bin/perl print "Content-type: text/html\n"; print "\n"; print "REQUEST_METHOD : $ENV{'REQUEST_METHOD'}<br>\n"; print "QUERY_STRING : $ENV{'QUERY_STRING'}<br>\n"; のようなCGI部分は、 CGIとして動作せずソースコードがそのまま表示されてしまいます。 過去ログにあったように Apathの設定関係 httpd.conf に手を加え、cgiを認識させるというような手順や、CGIを認識するディレクトリの変更はすでにしてあります。 それでも解決しませんでした。 あと、別に作ったCGIは普通に動作するという状況です。 フォームからの送信ボタンを押すとソースコードになってしまうのです。 どこに手をつけたらいいのかわからない状況なので、 よろしくお願いいたします。 また、書き足りない情報がありましたらご享受ください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 藤田 朋郎(@hujitomo)
- ベストアンサー率54% (39/71)
「http://127.0.0.1/cgi-bin/print.cgi」を直接ブラウザで表示させるとど~なるのカナ? もしこれで正常にスクリプトが動くようならフォームを記述した html ファイルへのアクセスが間違っています。 CGI の動作テストをしたいなら、呼び出す html も当然 http 経由で表示させる必要があります。単純にファイルのアイコンをダブルクリックしてブラウザに表示では駄目。 「http://127.0.0.1/cgi-bin/フォームを記述したhtmlファイル名.html」 でアクセスすると幸せ。
- 藤田 朋郎(@hujitomo)
- ベストアンサー率54% (39/71)
>ソースコードが表示されてしまいます。 それってローカル環境で http を経由しないでスクリプトを呼び出した時の動作なんだけど… キチンとサーバー(Apache)経由で接続してます?
補足
具体的にApache経由で接続しているとはどういうことなのでしょうか? 私は、ブラウザに「http://127.0.0.1/cgi-bin/CGI名.cgi」等のCGIやhtmlまでのパスを入力して表示させて動作確認をしていますが、まずいのでしょうか。 現状としましては、 ブラウザにパスを入力して、htmlを表示→ブラウザ上の送信ボタンを押す→cgiがソース表示になると言う感じです。 ブラウザに他のcgiなどのパスを入力した場合は、ちゃんと動作します。
補足
回答ありがとうございます。 「http://127.0.0.1/cgi-bin/print.cgi」をブラウザからパス入力で表示させた場合、 REQUEST_METHOD : GET CONTENT_LENGTH : と表示されます。(コードの表示ではないです。) フォームからのデータを受け取ってない状態なので、これだけの表示になるんだと思います。 htmlファイルはhujitomoさんの言われる通り、 「http://127.0.0.1/cgi-bin/フォームを記述したhtmlファイル名.html」 今回の例でいうところの 「http://127.0.0.1/cgi-bin/sample_form.html」 をブラウザに入力することによって、表示はされます。 ただ、このhtml上のフォームボタンをクリックした場合、本来、上記の実行結果が出るところが、コード表示になってしまいます。