FORM から呼び出す

FORM に入力されたデータをファイル("log.txt")に保存します。

プログラムの説明

  1. CGI の最も一般的な使い方は FORM から入力したデータを取得して、ファイルなどに保存する事でしょう。
    今回は FORM の ACTION から Perl のプログラム(log.cgi)を呼び出します。
    <form action="log.cgi" method="get">
      <input type=text name="inputtext">
      <input type=submit value="記入したら押してください">
    </form>
    
  2. データをファイル(log.txt)に追加する log.cgi です。
    #!/usr/local/bin/perl
    print "Content-type: text/html\n\n";
    
    $file = "log.txt";
    $buffer = $ENV{QUERY_STRING};
    open (LOG, ">>$file");
    print LOG "$buffer\n";
    close (LOG);
    print "[$buffer] を log.txt に保存しました\n";
    
  3. form はユーザーがデータを入力する基本となるタグです。
    タグは大文字でも小文字でも構わないのですが、最近は小文字が増えてきているようです。
    form にはサーバーで実行するプログラムと、プログラムに渡すデータを定義します。
    action オプションには、フォームに入力されたデータを処理する CGI などのプログラムを指定します。
    今回は form の action から log.cgi を呼び出しています。
    method オプションは、ポストバックのときにデータを渡す方法で get と post があります。
    <form action="log.cgi" method="get">
  4. データは INPUT TYPE=text からタイプ入力します。
    name オプションは、入力フィールドに記入されたデータを、他のフィールドと区別するためのIDを指定します。
    <input type=text name="inputtext">
  5. FORM に入力されたデータは、環境変数 'QUERY_STRING' に格納して CGI に渡されます。
    log.cgi では 'QUERY_STRING' からデータを取得してファイル(log.txt)に追加します。
    $buffer = $ENV{QUERY_STRING};
  6. log.txt は追加書き込みモードでオープンします。
    open (LOG, ">>$file");
    $buffer をファイルに追加します。
    print LOG "$buffer\n";
  7. log.txt の確認は サーバーのファイルを入力 を参照して下さい。
    半角入力のときはこれで良いのですが、日本語を入力するとコードが化けてしまいます。
    日本語に対応する方法は 日本語に対応 で説明します。

【NOTE】

FORM からデータを入力して log.cgi が呼ばれたときの URL を見て下さい。
URL に続いてタイプ入力したデータが表示されているでしょう。
例えば "xyz" をタイプ入力したときは次のようになります。
http://maedakobe.rw.xsi.jp/perl/log.cgi?inputtext=xyz

この形式で送信できる TEXT の最大長は256文字までです。
また送信されたデータが丸見えになります。(全角文字は URL エンコードされている)
post で送信すると長さの制限が無くなり、データも見えなくなります。
post で転送するプログラムは post で転送 を参照して下さい。

前田稔の超初心者のプログラム入門
超初心者のプログラム入門(Perl)