• ベストアンサー

この場合、CGIプログラムの記述を教えて!

http://www.d3.dion.ne.jp/~tiyoko01/form/form.html このページに掲載されている意見を入力する部分だけをネットにCGIを使ってアップしたいです。 CGIは初めてです。CGIのプログラムをネットサーバーに記述するんでしょうか? どんなプログラムを記述すればいいのでしょうか? 意見を受信して、それを私に返すプログラムですかね? 精通されている方がおられましたら、記述内容教えて下さいませ。 宜しくお願いします。

  • CGI
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • kichi8000
  • ベストアンサー率41% (658/1581)
回答No.1

サーバー環境によってCGI設置の方法が違うし、 CGIについてレクチャーすることになるようなので、 また、CGIのDEBUGの必要があると考えると、 ネットサーバーがダウンする危険性があるので、 ここで回答するのはたぶん無理。 最悪の場合、間違えて無限ループなんか作ってしまうと、停止できなくなって迷惑をかける。 手始めには、画面に数文字を表示させるのも難しいんじゃないだろうか。 CGIはプログラムだと言うことを認識してください。失敗するとサーバーに迷惑がかかります。 あるサーバーは、CGIの長時間動作(無限ループ等)で強制停止するし、多重動作はできないので、初心者にも安心して使えるんだけどねぇ。 ここで紹介するCGIは、すべてPerl(パールと読む)で書いています。 CGIの設置。 ネットーサーバーでperlが使えることを規約で確認。 CGIネットサーバーを使うための使用登録、FTPサーバーログインネームとパスワードの取得。 アドレスネームの決定。FTPアドレスの確認。 FTPソフト(必要ない場合がある)をPCにインストールと、FTPアドレス、FTPサーバーログインネームとパスワードの登録。 CGIファイルのヘッダ=perlのパス名と改行1行を確認。 テキストファイルとHTMLファイルの文字コード形式の決定。 HTMLファイルへのヘッダの1行目に文字コード形式の記述が必須。 テキストファイルのヘッダの3行目以降に文字コード形式の記述が必須。 テキストエディタから保存するときに、先に決めておいた文字コード形式で保存することが必須。 ファイル名は英文字小文字でないと動作しない。(ピリオドが複数あると削除不能になる可能性がある-おかしな記号は使わない) サーバーで決められた改行コードに自動変換されるようにFTPソフトを設定。 サーバーへのファイル保存のためのフォルダ構造の決定。 アップロードしたフォルダと各種ファイルのパーミッションの決定。 簡易に作成したり上級者である場合以外では、CGIのDEBUG環境をPCに設置して、バーチャル環境で作成&テストしないと、おそらく失敗してサーバー全体に迷惑をかけることになる。 末尾のセミコロン「;」(文末記号)を忘れないこと ここまできて、やっとCGIを作成する環境が整ったことになります。 以下は、基本を飛び越えて中級になっています。 htmlをCGIで書き直しただけです。 かなり盛り込んでありますが大丈夫でしょうか。 ユーザーhtml部分に下のhtmlをprint文で書き直して配置してください。 受け取りスクリプトはほかに必要です。 「初めて書いたCGI」を表示するスクリプト。 ===ここから テキストがUTF8でHTMLがCP932(拡張Shift-JISのこと)で保存の場合のCGI記述 #!/usr/local/bin/perl #2行目は改行のみ use utf8;#これ以下の記述はUTF8である宣言:基本これじゃないと文字化けする # use ~:モジュールを組み込む use Encode;#文字コード変換を組み込み use CGI;#htmlのフォームが読み込める $q= new CGI;#htmlオブジェクトを $q->~ で呼び出し #以下cp932<=>utf8 の自動文字コード変換のための記述 use open IN => ":encoding(cp932)";#ファイル操作の自動文字コード変換の記述 use open OUT => ":encoding(cp932)"; use open IO => ":encoding(cp932)"; binmode STDIN, ":encoding(cp932)";#print文の自動文字コード変換の記述 binmode STDOUT, ":encoding(cp932)"; #---HTMLヘッダ print "Content-type: text/html\n\n"; print "<!DOCTYPE html>\n"; print "<html>\n"; print "<head>\n"; print "<meta http-equiv='Content-Type' content='text/html; charset=shift_jis'>\n"; print "<meta http-equiv='Content-Language' content='ja'>\n"; print "<title>初めてのCGI</title>\n";#htmlのタイトル print "</head>\n"; print "<body>\n"; #ここから ユーザーhtmlの書き出しスクリプトを記述 $txt = "初めて書いたCGI"; #$txt = $q->param("status");#記述例 htmlフォーム(submit)のname=statusの読み出し :htmlからこのCGIを呼び出したときにのみ使用 print "<p align=center>$txt</p>\n";#変数の文字列内記述 #print "<div class=\"cl\">";#記述例 ダブルコーテーション #ユーザーhtml ここまで print "</body>\n"; print "</html>\n"; ===ここまで 下のhtmlはcssのclassや画像ファイルを呼び出していますのでエラーになります。 そのままでは表示が崩れるでしょう。 ===フォームのhtmlは上のprint文に組み込みます。 <div class="cl"> <div> <p> <img src="item1.gif" width="221" height="31" alt="「基本的なフォーム」のナビゲーションバー" class="space_top"> </p> <form method="post" action="#"> <p> お名前:<input type="text" name="name">(テキスト入力) </p> <input type="password" name="pass"> (パスワード入力) <p> 性別: <input type="radio" name="seibetu" value="man" checked> 男  <input type="radio" name="seibetu" value="woman"> 女(ラジオボタン) </p> <p> 趣味: <input type="checkbox" name="pc" value="pasokon" checked> パソコン <input type="checkbox" name="golf" value="golf"> ゴルフ <input type="checkbox" name="garden" value="gardening "> ガーデニング(チェックボックス ) </p> <p>  好きな色: <select name="color"> <option>赤</option> <option selected>青</option> <option>緑</option> <option>黄色</option> </select>(選択メニュー) </p> <p> <textarea name="message" rows="4" cols="40">自由にご意見をお書きください</textarea> (複数行のテキスト入力) </p> <p> <input type="submit" value="送信">  <input type="reset" value="取り消し">(送信とリセットボタン) </p> <p class="font4"> サンプルのため送信はできません </p> </form> </div> </div>

kfjbgut
質問者

補足

してサーバー全体に迷惑をかけることになる。 具体的にはどのような迷惑ですか? 私は自分ネットショップのURLを取得した企業さんのサーバーを使っています。

その他の回答 (1)

  • kichi8000
  • ベストアンサー率41% (658/1581)
回答No.2

サーバーもコンピューターです。 契約時に禁止事項にかかれているはずです。 例えば、SUB Aというサブルーチンの中から対策なしに自身のSUB Aを呼び出したとしましょう。 そうすると無限に呼び出すことになり、あっという間にサーバーのメモリー(リソース)を使いきり、サーバーが停止し全ユーザーが使用できなくなります。 そうなれば、アカウント停止、強制退会になりかねません。 DEBUGERが必要なのはこのためです。

関連するQ&A

  • CGIで占いプログラムを作りたいのですが・・・

    CGIで占いプログラムを作りたいと思っています。その占いのタイトルは「あなたの生年月日から占う今日の運勢」というもので、 (1)自分の生年月日を入力してクリック    ↓ (2)生年月日とクリックした日を元に占い結果表示(結果は40~50通り用意しています) となるように考えています。 このような占いが出来るフリーのCGIはあるのでしょうか?私の方ではCGIは変更部分書き換えができる程度の知識はあります。 この占いに近いプログラムを提供しているサイトに 鑑定/占い ボンバイエ(http://www.bom-ba-ye.com/) というところがありますが、リンクでの提供でプログラム自体の提供はしていないようです。私は自分のサーバーにCGIプログラムを置きたいと思っています。 分かる方、教えてください。よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGIの最初の記述

    つい先日、CGIをテキストエディタで開き編集をしていたところ最初にPerlの場所を示すパスらしきものが記述されていました。#!/usr/bin/perlみたいなのです。 そこで質問なのですが、/usr/bin/perlとはどこを示しているのでしょうか? 私、ウィンドウズPCでWWWサーバーを開設しておりますのでやはり気になってしまいます。それと言うのも、Apacheというソフトで開設しているのですがそのソフトでCGIを動かそうとすると、動かしたいCGIプログラムの最初の記述である/usr/bin/perlを私のサーバーのPerlをインストールしているフォルダへのルートに書き換えなくてはCGIが動かないからなんです。大変困っております。どうか、皆様私にお力をお貸し下さい。

    • ベストアンサー
    • CGI
  • CGIでのHTMLとプログラムコードの分離について

    CGIでのHTMLとプログラムコードの分離について CGIプログラミングのフレームワーク的なアイデアについてご教示願いたいです。 CGIを記述する場合、その多くは下記のようなスタイルになるのではないかと思います。 1.formタグのactionからcgiを呼び出す     ↓ 2.cgiの中で計算やsendmail等の処理を実行     ↓ 3.結果をブラウザ上に表示するためprint等を利用してhtmlタグを表示 この手法を用いると、手順2のところでHTML部分とプログラムコード部分が混合してしまい、見栄え(html部分)を変更しようと考えた時、HTML部分の記述があるcgiプログラムを編集し、該当する部分のタグを表示させているであろうprint文の表示内容を変更する必要があります。 見栄えのhtml部分とCGIのコードを完全に分離することは出来ないのでしょうか??? 上記手順の「1」に関してはhtmlファイルを編集する事だけで、cgiファイルを編集する必要はありません。 手順「3」もリダイレクトを利用すれば可能だと思います。 問題は、手順「2」の部分です。 この部分の見栄え部分を変えようとすると、どうしてもcgiプログラムを開いて編集する必要に迫られてしまいます。 下記の例のような処理(見栄え用のhtmlファイルを読み込む方法)は出来ないものでしょうか? <例:アンケートフォーム> 1.アンケートフォーム(html)のformタグにあるactionからcgiを呼び出す     ↓ 2.cgiでformタグ内のテキストエリアやラジオボタン等の情報を収集     ↓ 3.収集結果を表示させるための「hantei.html」を読み込む     ↓ 4.読み込んだ「hantei.html」の中に収集結果を埋め込んで表示     ↓ 5.問題なければアンケート結果をsendmail等でメール送信   問題あれば手順1のアンケートフォーム(html)へ戻る     ↓ 6.無事にメール送信出来れば、有難うございましたページ(html)へリダイレクト 上記手順の3と4が実現できれば、見栄えを変えたい時はhtmlファイルを編集すればよく、cgiプログラムを触る必要がなくなるのではないかと思います。 私が考えている事について、「自分はこうしている」とか「そうではなくてこうすれば良いよ」などなどありましたら、是非ご教示願いたいです。

    • ベストアンサー
    • Ruby
  • cgi プログラムについて

    お世話になります。 Perl,cgi,プログラミングについてもまったくの素人です。 ホスティングサーバの乗り換えを予定しています。 現在使っているホスティングサーバで提供されているsendmail2.cgiというcgiを公開しているHPで使っています。 移転先のサーバにはそのcgiは当然なくどうしようかと考え中です。 移転先のサーバでは、ネットに落ちている同じ名前のcgiを利用できたりするのでしょうか? 同じ名前でもまったく別物のcgiと考えていいのでしょうか? ちなみに、現在のサーバのプロバイダにcgiプログラムが欲しいと言ったら、断られ、もし提供したとしても perlのバージョンなどでうまく動くか分からないといわれました。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • CGIプログラムの「↑」

    フリーのCGIをDLしてプログラムを開くと、 ほとんどは改行などされていて整列していますが、 たまに全く改行されずに「↑」みたいなのが書いてあり、 その部分を改行させると、「■↑↑」になったりします。(PC上で?) ただ、これをサーバーにアップロードして開くと綺麗に整列されてます。 このプログラムをPC上できれいに表示させるためにはどうすればいいでしょうか? よろしくお願いします。

  • CGIを有効にしたい

    初心者なのでCGIを動かす方法がわかりません。 自分で質問ページや同じエラー出てるものなどを調べ、 色々やってみましたが動きませんでしたので質問させて下さい。 <状況> ・WADAXのレンタルサーバを使用 ・お問い合わせフォームの記述は、 form id="form1" action="contact.cgi" method="post" onSubmit="return check();" ・同じ階層にあるcontact.cgiの属性の変更で700に設定 ・同じ階層に.htaccessをUPし、その内容は、 Options +ExecCGI AddHandler cgi-script .cgi .pl ・contact.cgiの一行目は、 #! /usr/local/bin/perl ・403エラーだったのが色々いじったら500エラーになった。 その他確認することはありますでしょうか。 お問い合わせフォームから送信を押した後が表示されないので困ってます。 わかる方、どうぞよろしくお願いします。

  • C言語で作ったプログラムをCGIで動かすには

    C言語で作ったプログラムをCGIで動かすにはどうすればいいのでしょうか? サーバ側になにをアップし、ブラウザ側で何を呼び出せばいいのかわかりません。 EXEファイルの拡張子をcgiにしても ダウンロードされるだけだったし(当たり前ですか?)。 ちなみにサーバは会社のサーバを使っていて、CGIも使えるはずです。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGIプログラムを作りたいのですが…

    ある事柄を入力して送信するフォームを作っています。フォームのほうは正常にできましたが、フォームから送信されたデータを受信するプログラムは、作り方がわかりません。 CGIを使えば良いと聞きましたが、まったくわかりません。便利なソフトもあるみたいですが、事情によりLinuxで作成することになったので、ソフトを使わずテキストエディッターだけで作りたいです。 どのようにして作成すればよいですか?

  • form ファイルアップロードを プログラムで再現

    html + CGI などで、 form を使いパソコン内のファイルをサーバーなどにアップロードできますが、 その際、HTMLなどの form からではなく、 独自に作ったプログラムから form と同様のリクエストを送り、 サーバー上にファイルをアップロードしたいのですが、 どのようにすればよいのでしょうか? 独自のプログラムは、本来のformがあるページとは違うドメイン もしくはローカルパソコンから実行するものとします。 言語は何でもかまいません。

    • 締切済み
    • CGI
  • CGIの引越しが上手くいきません

    さくらレンタルサーバ・ライトの古いホームページから 同じサーバの新しいホームページに メールフォームを移動させました。 ページは表示されるのですが、メールの送受信が出来ない状態です。 同じレンタルサーバなので、変えたのはform.cgiファイルの中の ホームページアドレスのみです。 以下がファイルの一覧です。 cgi-binフォルダの中 (1)cgi-lib (PLファイル) (2)form (CGIファイル) (3)jcode (PLファイル) それ以外のファイル mail.html (送信後に表示するページ) top.html (メールフォームのページ) style.css ホームページアドレス以外に変える部分があるのだと思いますが、 それがどこなのか見当がつきません。 どなたかお分かりになる方がおられましたらご指摘をお願いします。

専門家に質問してみよう