Perl Perl_2
Perl 「 モジュール 」 CGI.pm Form 開始と終了 (0xfc)
目次 - Perl Index
Theme
Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0xfc 回。
CGI.pm で、HTML フォームの開始と終了を表す要素を生成するメソッド「 start_form() 」および「 end_form() 」を確認する。
HTML フォームを生成する start_form と end_form
CGI.pm を利用して、HTML フォームを生成するには、メソッド「 start_form 」とメソッド「 end_form 」を利用します。
start_form と end_form の両メソッドは、既にこれまでの確認・検証で利用しているメソッドですが、ここでは改めてその利用方法を確認します。
なお、過去これらのメソッドは、それぞれ「 startform() 」と「 endform() 」という名前でしたが、現在この過去の名前は非推奨になっています。
start_form() が生成する HTML コード
メソッド start_form は次の様に指定します。
print $q->start_form();
上記 Perl コードからは次の HTML コードが生成されます。
<form method="post" action="http://localhost" enctype="multipart/form-data">
「 form 」のスタートタグに、デフォルトのアトリビュートが指定されています。
アトリビュート「 method 」
アトリビュート「 method 」は、フォームデータを送信する際に利用する「 HTTP メソッド 」を指定します。HTTP メソッドは、「 GET 」と「 POST 」いずれかのメソッドを指定します。CGI.pm での両メソッドの振る舞いの違いは (0xe3) で確認しました。
現在では、パラメータを隠ぺいして送信する「 POST 」メソッドが主に利用されるため、メソッド start_form() では、デフォルトで「 post 」を設定します。
アトリビュート「 action 」
アトリビュート「 action 」は、フォームの投稿時にフォームデータをどこに送信するかを指定します。通常フォームデータの送信先には、データを処理するプログラムファイルを指定します。
メソッド start_form() では、デフォルトで自分自身 ( this script ) を指定します。つまり、フォームデータを投稿した際に、投稿を受け付けたファイルと同じファイルでデータを処理しようとします。
シェル ( コマンドライン ) 上で該当の CGI プログラムファイルを実行すると、上記例の様に「 http://localhost 」が設定されますが、実際に Web ブラウザでプログラムファイルにアクセスすれば、正しいファイル名が設定されます。
アトリビュート「 enctype 」
アトリビュート「 enctype 」は、フォームデータをサーバに投稿する際に、どの様にエンコードするかを決定するコンテンツタイプ指定します。ただし、このアトリビュートは HTTP メソッドが POST の場合のみ有効です。
メソッド start_form() では、デフォルト ( XHTML が有効な状態 ) で「 multipart/form-data 」を指定します。
「 multipart/form_data 」は、比較的新しいタイプのコンテンツタイプで、ファイルのアップロード等、大きなサイズのデータやバイナリデータを転送する際に利用します。
エンコードの方式を指定する enctype ですが、multipart/form_data では、取り扱うデータの特徴からエンコードは行わず、データをマルチパートデータ ( 複数の部分のデータ ) として送信するとのことです。
通常テキストデータ等のそれほど大きくなく、バイナリでもないデータを扱う場合は、「 application/x-www-form-urlencoded 」を指定します ( multipart/form-data で指定しても今のところ問題は見えません )。
これらの enctype は、MIME ( Multipurpose Internet Mail Extensions ) と呼ばれる電子メール用の規格ヘッダ「 Content-Tyep 」の subtype として規定されているものを転用しています。
MIME および URI エンコードについては (0xc0) で少しだけ確認しました。
end_form() が生成する HTML コード
メソッド end_form() は次の様に指定します。
print $q->end_form();
上記 Perl コードからは次の HTML コードが生成されます。
</form>
0xfc -> 0xfd へ
次回は、メソッド「 start_form() 」をもう少し確認します。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)