blog20100901

2013/08/20 - プログラミング言語 Perl にまつわる etc. - Perl monger
参考 : perldoc, perldoc.jp, search.cpan.org, perldoc.perl.org ...
「 初めての Perl 第 6 版 」(オライリー・ジャパン発行 ISBN978-4-87311-567-2) 」
「 続・初めての Perl 改訂版 」(オライリー・ジャパン発行 ISBN4-87311-305-9) 」
「 Effective Perl 第 2 版 」(翔泳社発行 ISBN978-4-7981-3981-4) 」 ... etc,.

Perl Perl_2

Perl 「 モジュール 」 CGI.pm Form 開始と終了 (0xfc)

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)の記事
 Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228) (2023-10-11 23:49)
 Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227) (2023-05-26 15:41)
 Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226) (2023-05-19 17:05)
 Perl mp2 翻訳 テンプレートシステムの選択 (d225) (2022-08-15 22:23)
 Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224) (2022-06-15 20:43)
 Perl mp2 翻訳 チュートリアル (d223) (2022-06-15 20:42)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

Llama
リャマ
TI-DA
てぃーだブログ
プロフィール
セラ (perlackline)
セラ (perlackline)
QRコード
QRCODE
オーナーへメッセージ

PAGE TOP ▲