HTML-FillInForm-1.00 > HTML::FillInForm

名前

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_cashenoにセットすることで、キャッシュをコントロールできます。

バグ

どんなバグレポートも、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