名前¶
HTML::FillInForm - HTML フォームにCGIデータをすまわせる
説明¶
このモジュールは、前のページのHTMLフォームからのデータを HTMLの input や textarea や select タグに自動的に挿入します。 HTML::Parserのサブクラスであり、HTML::ParserでHTMLを解析し、値をフォームタグに挿入します。
有益な適用例の一つは、ユーザーがHTMLフォームを、必要事項を埋めずにサブミットしたら、 HTML::FillInFormは、全てのフォーム要素がサブミットされた内容を含んでいる状態で、 HTMLフォームを再表示するのに使われえます。
概要¶
この例では、$htmlForm
に入っているHTMLフォームに、$q
の中に入っているCGIパラメータで埋めます。 たとえば、以下では、どの"name"テキストフィールドの値も"John Smith"になります。
my $q = new CGI;
$q->param("name","John Smith");
my $fif = new HTML::FillInForm;
my $output = $fif->fill(scalarref => \$html,
fobject => $q);
メソッド¶
- new
-
new()
を呼ぶと、新しいFillInForm オブジェクトを生成します:$fif = new HTML::FillInForm;
- fill
-
$html
に含まれるHTMLフォームをうめます:$output = $fif->fill(scalarref => \$html, fobject => $q);
$q
からのデータで、$hrml
に含まれるHTMLフォームが埋められたものが返ります。$q
はCGIモジュールのparam
のように働くparam()
メソッドを持っている必要があります。$output = $fif->fill(scalarref => \$html, fobject => [$q1, $q2]);
配列リファレンスとして複数のオブジェクトを渡すこともできます。
$output = $fif->fill(scalarref => \$html, fdat => \%fdat);
%fdat
からのデータで、$html
に含まれるHTMLフォームが埋められたものが返ります。 配列リファレンスを使って、%fdat
を使う複数の値を渡せます。代わりに、次のようにもできます。
$output = $fif->fill(arrayref => \@array_of_lines, fobject => $q);
および、
$output = $fif->fill(file => 'form.tmpl', fobject => $q);
HTMLに複数のフォームがあり、二つのうち一つのフォームにしか値を入れたくなければ、 ターゲットを特定できます。
$output = $fif->fill(scalarref => \$html, fobject => $q, target => 'form1');
次のものを含むフォームしか埋めません。
<FORM name="form1"> ... </FORM>
注意して下さい。このメソッドは、デフォルトでパスワードフィールドを埋めます。 無効にするには、次のものを渡して下さい。
fill_password => 0
いくつかのフィールドを埋めるのを無効にしたいなら、
ignore_fields
オプションを使って下さい:$output = $fif->fill(scalarref => \$html, fobject => $q, ignore_fields => ['prev','next']);
他のモジュールからの呼び出し¶
Apache::PageKit¶
Apache::PageKitで、HTML::FillInFormを使うのは簡単です。 <form>タグを含むいくつかのページのために、自動的に呼ばれます。 fill_in_form
設定オプションを使うことで有効か無効にできます。
Apache::ASP v2.09 を含むそれ以降のバージョン¶
HTML::FillInFormは、いまや、Apache::ASPに統合されています。次のようにすれば有効になります。
PerlSetVar FormFill 1
$Response->{FormFill} = 1
バージョン¶
このドキュメントは、HTML::FillInFormモジュール versin 1.00 について説明しています。
セキュリティ¶
ページにパスワードフィールドがある場合、キャッシュの問題を思いつくかもしれません。 次のURLにこの問題についての議論があります。
http://www.perlmonks.org/index.pl?node_id=70482
要約すれば、ブラウザにはCGIスクリプトの出力をキャッシュするものがあり、 Expires ヘッダをセットすることでこれをコントロールできます。 たとえば、CGI.pmで -expires
を使ったり、 Apache::PageKitの Config.xml ファイルのbrowser_cashe
を noにセットすることで、キャッシュをコントロールできます。
バグ¶
どんなバグレポートも、tjmather@tjmather.com.に提出してください。
注意書き¶
Perl 5.005 と HTML::Parser version 3.08 を必要とします。
HTMLとPerlコードを結びつけることをせずにCGIデータをHTMLフォームに挿入できたかったので、 このモジュールを書きました。 CGI.pmと Embperlは、CGIデータをフォームに挿入することを可能にしますが、 HTMLとPerlをミックする必要があります。
原文まま¶
(c) 2002 Thomas J. Mather, tjmather@tjmather.com
All rights reserved. This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SEE ALSO¶
HTML::Parser, Data::FormValidator, HTML::Template, Apache::PageKit
CREDITS¶
修正、バグレポート、ドキュメントが、以下の方々により寛大に提供されました:
Tatsuhiko Miyagawa
Boris Zentner
Patrick Michael Kane
Ade Olonoh
Tom Lancaster
Martin H Sluka
Mark Stosberg
Trevor Schellhorn
Jim Miner
Paul Lindner
Maurice Aubrey
Andrew Creer
Joseph Yanni
Philip Mak
Jost Krieger
Gabriel Burka
Bill Moseley
Thanks!
翻訳について¶
翻訳者:加藤敦 (ktat.is@gmail.com)
Perlドキュメント日本語訳 Project にて、 Perlモジュール、ドキュメントの翻訳を行っております。
http://perldocjp.sourceforge.jp/
http://sourceforge.jp/projects/perldocjp/
http://www.freeml.com/ctrl/html/MLInfoForm/perldocjp@freeml.com
http://perldoc.jp