• ベストアンサー

cgiをhtmlに出力する方法

cockyの回答

  • cocky
  • ベストアンサー率57% (232/402)
回答No.1

やり方としては2通り考えられます。 1.「.html」の拡張子でもCGIが動くようにサーバの設定を変更してしまう  同じディレクトリに「.html」の拡張子がついたファイルと「.cgi」の拡張子がついたファイルが混在している場合に、普通は「.html」はあくまで普通のHTMLファイルとして、また「.cgi」はCGIプログラムとして処理されることが多いと思いますが、これに対してサーバの設定を変更して、「.html」の拡張子のファイルもCGIプログラムとして動かしてしまおうというものです。  ただしこれをやると、当然のことながら同じディレクトリに普通のHTMLファイルは置けなくなりますし、サーバの種類によってはユーザー側で設定をいじれない(=「.htaccess」ファイルが無効化されている)場合も多く、必ず出来るというわけではありません。  なお具体的なサーバの設定変更方法については、サーバソフトの種類によっても異なるため、ご契約されているプロバイダに問い合わせるのが一番だと思います。 2.CGIプログラムからHTMLファイルを出力してそこにジャンプする  こちらは、CGIの出力結果を一度ファイルに保存し、その上でその保存したファイルにHTTPヘッダの「Location:」を使ってジャンプする、というものです。  この方式はサーバの設定を変更しなくて済む分環境を選びませんが、その代わりリンクの指定はあくまで「.cgi」ファイルを指定する必要があるため、結果として「元ファイル→.cgiファイル→.htmlファイル」という二段階ジャンプの形になってしまいます。 ただどちらも、それなりにサーバの設定やCGIプログラムの原理に通じている必要があり、初心者には難しいかもわかりませんね。

new-god
質問者

お礼

ありがとうございます。どのようにしたらできるかということがわかりました(できるかどうかは別として)。自分のHPに日記みたいなものを載せようかと思ってまして、そのときにわざわざFTPで送信しないでもcgiを使えたらと思って投稿しました。それでなおかつxxx.cgiというアドレスを使うより、xxx.htmlにしたいと思っていましたので。こういったcgiってどこかにフリーで出回ってないものなんでしょうか?

関連するQ&A

  • CGI 実行後に HTML でフォーム付のページを出力したいのですが・・・

    CGI 初心者ですが、質問です。商品の合計金額を出す CGI プログラムを実行後に HTML でフォーム及び送信ボタン付のページを出力したいのですが・・・色々とサイトを渡り歩いたのですが、初心者なものでどのサイトを見てもそれらしき事は書いてあるのですが何の事を書いてあるのかが全くわかりません。大変お手数で申し訳ないのですがプログラムの記述ヒントをこの場で頂ければ助かります。宜しくお願い致します。

  • CGIから出力される文字が化けて表示される

    メールフォームのCGIが出力するHTMLがブラウザで正常に表示されません。 HTMLで書いたメールフォームから、CGIを使って指定メールアドレスに文面を送信するページを作っています。 CGIとメールフォームは、ページを設置するレンタルサーバのサポートから入手した、公式のバージョンに手を加えて使っていますが、動作中に表示されるページの一部が文字化けする障害が発生してしまいます。 状況は下記の通りです。 1.フォームの送信ボタンを押すと、内容確認を促すページにジャンプ、もし入力漏れがあれば   警告ページにジャンプするのですが、どちらにジャンプしても表示が化けてしまいます。 2.文字コードを確認すると、CGIから出力されたHTMLが欧文(ISO)形式として認識されています。 3.CGIと、呼び出しに使っているHTMLはEUC形式で保存されているので、表示モードをEUCに   切り替えると、正しい内容で表示されます。   また、実際にメールを送信すると、受信メールも正常に送られています。 4.送信が正常に済むと、その旨を確認するページが表示されるのですが、そのページは正しく   表示されます。(文字化け表示のまま遷移しても、正しく表示されます) 5.文字化けしているページのソースを確認すると、一応charasetでコードがEUCに定義されている   ようなのですが、ブラウザ側では認識されていないようです。 画面の遷移を整理しますと、【フォーム】>【確認/警告】>【送信完了確認】となりますが、真ん中にある「確認/警告」の両ページのみが文字化けする、という感じです。 何か対応方法をご存知でしたら、ご教授頂けますでしょうか。 よろしくお願い致します。

    • 締切済み
    • CGI
  • htmlのフォームからcgiにデータを渡す方法

    下記[例1]のhtmlで作成したフォームから下記[例2]のcgiへデータを渡したいのですが、 どのようにしたら良いのでしょうか? 初心者なので全くわかりません。 お手数とは存じますが、ご享受お願い致しますm(__)m [例1] <form method="post" action="xxx.cgi"> <input type="text" name="a" value="" size="10" /> <input type="text" name="b" value="" size="10" /> <input type="submit" value="送信" /> </form> [例2] *****($a,$b); 上記[例1]の、aとbを、cgi[例2]の$aと$bに。 質問内容が分かりにくくて申し訳ございませんが、よろしくお願い致します。

    • ベストアンサー
    • CGI
  • CGIで他のCGIの出力を取り込む方法について。

    CGIで他のCGIを呼び出し、同じページの一部として出力したいと考えています。 例えば、親のCGIが簡単な機能のCGIをページの一部として出力し、 そのパラメーターを子のCGIに受け渡し呼び出すようなしかけです。 なんかうまい方法ありますか?? あまり急いでいませんが、宜しくお願いします。

    • ベストアンサー
    • CGI
  • IIS7.0でのnph_cgiが逐次出力しません

    CでCGIを作成し、Windows 2003 Server (IIS6)で動かしています。CGIの名称をnph_xxx.cgiとしてHTMLを出力し、ブラウザに逐次表示しています。このCGIをWindows 2008 server(IIS7.0)で動作させたのですが、逐次出力できておりません。CGIが走り切るとブラウザに出力されます。IIS7.0の設定が悪いのか、プログラムを直さなければいけないのかわかりません。解決策をご存じの方、よろしくお願いします。

    • 締切済み
    • CGI
  • JavaScriptの変数にCGIの出力を入れたい。

    呼ばれると文字"a"を出力するhttp://xxx/ret_a.cgiがあるとします。 JavaScriptの中で変数hogeに、このhttp://xxx/ret_a.cgiの出力を格納するにはどうしたらよいですか? http://xxx/ret_a.cgiの内容は以下のようなかんじです。 ------------------- ここから ------------------- #!/usr/local/bin/ruby puts "Content-Type:text/html\n\n" puts "<html>\n" puts "<head><title>test1</title></head>\n" puts "<body>\n" puts "a" puts "</body></html>\n" ------------------- ここまで ------------------- puts "a"だけだと、500 Internal Server Errorになってしまうので、 上記のようにしました。

  • CGIでCGIから出力した物を読みとる

    CGIを使ってCGIから出力されたものを読みとる 事はできるのでしょうか? あるサイトのデータベースを利用したいと思い、管理者に使っても良いか聞いたら「htmlとして出力されたものなら使ってOKといわれました。」 この、CGIからhtml出力された物を自作のCGIで読みとることは可能なのでしょうか? 回答よろしくお願いします。

    • ベストアンサー
    • CGI
  • このようなCGIを探しているのですが

    例えば、 「http://service1.symantec.com/SUPPORT/INTER/japanesecustserv.nsf/jdocid/20030821133704945」 のサイトの一番下の方、「この文章を評価する」というところで、一度送信すると、次回は、「ご協力ありがとうございました。…」 のようにメッセージが表示されて送信フォームは表示されません。このようなCGIがほしいのですがありますか? このCGIは、Sendmailとメールデコード機能を併用したものですか?

    • 締切済み
    • CGI
  • CGI設置の方法について

    CGIの初心者ですが、下のファイル配置を具体的にどうすればいいでしょうか? CGIの設置ディレクトリを xxx と仮定します。下図のようなファイル配置でサーバに アップロードして下さい。[]内の数字はパーミッションです。 xxx / | +-- yoyaku.cgi [755] +-- jcode.pl [644] | +-- yoyaku / [755] | +-- yoyakustr.txt [666] +-- holiday.txt [666] どなたか、助けてください。

    • 締切済み
    • CGI
  • フォームからCGIを起動できない

    こんばんは。 WebサーバApacheでCGIを作成しています。 DocumentRootが初期設定/var/www/html/で、その下にindex.htmlを作成しました。 次にcgiのディレクトリが初期設定の/var/www/cgi-bin/で、その下にtest.cgiを作成しました。 そして、test.cgiのパーミッションを-rwxr-xr-xにしてからApacheを起動しました。 別マシンのブラウザからhttp://xxx.xxx.xxx.xxx/index.htmlでアクセスし、フォームのテキストボックスに「abc」と入力して送信ボタンを押しましたが、404エラーになってしまいます。 (アドレスバーには「http://xxx.xxx.xxx.xxx/test.cgi?NAME=abc」と表示) ブラウザのアドレスバーに直接「http://xxx.xxx.xxx.xxx/cgi-bin/test.cgi?NAME=abc」とすると正常にアクセスできます。 ドキュメントルート配下にあるindex.htmlからドキュメントルート外にあるCGIのディレクトリ(ScriptAlias /cgi/bin/ "/var/www/cgi-bin/")を参照するにはどのようにしたらよいのでしょうか? ----------index.html---------------- <HTML> <HEAD><TITLE>フォーム</TITLE></HEAD> <BODY> <FORM ACTION="../cgi-bin/test.cgi" METHOD="GET">名前 <INPUT TYPE="TEXT" NAME="NAME"><BR> <INPUT TYPE="SUBMIT" VALUE="送信"> </FORM> </BODY> </HTML> ----------index.html---------------- ----------test.cgi------------------ #!/usr/bin/perl $str = $ENV{"QUERY_STRING"}; print << "EOF"; Content-type: text/html <HTML> <HEAD><TITLE>TESTCGI</TITLE></HEAD> <BODY>$str</BODY> </HTML> EOF ----------test.cgi------------------

    • ベストアンサー
    • CGI