1 |
ktats |
1.1 |
=head1 名前 |
2 |
|
|
|
3 |
|
|
HTML::FillInForm - HTML フォームにCGIデータをすまわせる |
4 |
|
|
|
5 |
|
|
=head1 説明 |
6 |
|
|
|
7 |
ktats |
1.5 |
このモジュールは、前のページのHTMLフォームからのデータを HTMLの input や textarea や select タグに自動的に挿入します。 |
8 |
|
|
L<HTML::Parser>のサブクラスであり、HTML::ParserでHTMLを解析し、値をフォームタグに挿入します。 |
9 |
ktats |
1.1 |
|
10 |
ktats |
1.5 |
有益な適用例の一つは、ユーザーがHTMLフォームを、必要事項を埋めずにサブミットしたら、 |
11 |
|
|
HTML::FillInFormは、全てのフォーム要素がサブミットされた内容を含んでいる状態で、 |
12 |
|
|
HTMLフォームを再表示するのに使われえます。 |
13 |
ktats |
1.1 |
|
14 |
|
|
=head1 概要 |
15 |
|
|
|
16 |
ktats |
1.5 |
この例では、C<$htmlForm> に入っているHTMLフォームに、C<$q>の中に入っているCGIパラメータで埋めます。 |
17 |
|
|
たとえば、以下では、どの"name"テキストフィールドの値も"John Smith"になります。 |
18 |
ktats |
1.1 |
|
19 |
|
|
my $q = new CGI; |
20 |
|
|
|
21 |
|
|
$q->param("name","John Smith"); |
22 |
|
|
|
23 |
|
|
my $fif = new HTML::FillInForm; |
24 |
|
|
my $output = $fif->fill(scalarref => \$html, |
25 |
|
|
fobject => $q); |
26 |
|
|
|
27 |
|
|
=head1 メソッド |
28 |
|
|
|
29 |
|
|
=over 4 |
30 |
|
|
|
31 |
|
|
=item new |
32 |
|
|
|
33 |
|
|
C<new()> を呼ぶと、新しいFillInForm オブジェクトを生成します: |
34 |
|
|
|
35 |
|
|
$fif = new HTML::FillInForm; |
36 |
|
|
|
37 |
|
|
=item fill |
38 |
|
|
|
39 |
ktats |
1.5 |
C<$html>に含まれるHTMLフォームをうめます: |
40 |
ktats |
1.1 |
|
41 |
|
|
$output = $fif->fill(scalarref => \$html, |
42 |
|
|
fobject => $q); |
43 |
|
|
|
44 |
ktats |
1.5 |
C<$q>からのデータで、C<$hrml>に含まれるHTMLフォームが埋められたものが返ります。 |
45 |
|
|
C<$q>はCGIモジュールのC<param>のように働くC<param()>メソッドを持っている必要があります。 |
46 |
ktats |
1.1 |
|
47 |
|
|
$output = $fif->fill(scalarref => \$html, |
48 |
|
|
fobject => [$q1, $q2]); |
49 |
|
|
|
50 |
ktats |
1.5 |
配列リファレンスとして複数のオブジェクトを渡すこともできます。 |
51 |
ktats |
1.1 |
|
52 |
|
|
$output = $fif->fill(scalarref => \$html, |
53 |
|
|
fdat => \%fdat); |
54 |
|
|
|
55 |
ktats |
1.5 |
C<%fdat>からのデータで、C<$html>に含まれるHTMLフォームが埋められたものが返ります。 |
56 |
ktats |
1.1 |
配列リファレンスを使って、C<%fdat>を使う複数の値を渡せます。 |
57 |
|
|
|
58 |
|
|
代わりに、次のようにもできます。 |
59 |
|
|
|
60 |
|
|
$output = $fif->fill(arrayref => \@array_of_lines, |
61 |
|
|
fobject => $q); |
62 |
|
|
|
63 |
|
|
および、 |
64 |
|
|
|
65 |
|
|
$output = $fif->fill(file => 'form.tmpl', |
66 |
|
|
fobject => $q); |
67 |
|
|
|
68 |
ktats |
1.5 |
HTMLに複数のフォームがあり、二つのうち一つのフォームにしか値を入れたくなければ、 |
69 |
|
|
ターゲットを特定できます。 |
70 |
ktats |
1.1 |
|
71 |
|
|
$output = $fif->fill(scalarref => \$html, |
72 |
|
|
fobject => $q, |
73 |
|
|
target => 'form1'); |
74 |
|
|
|
75 |
|
|
次のものを含むフォームしか埋めません。 |
76 |
|
|
|
77 |
|
|
<FORM name="form1"> ... </FORM> |
78 |
|
|
|
79 |
|
|
注意して下さい。このメソッドは、デフォルトでパスワードフィールドを埋めます。 |
80 |
|
|
無効にするには、次のものを渡して下さい。 |
81 |
|
|
|
82 |
|
|
fill_password => 0 |
83 |
|
|
|
84 |
ktats |
1.5 |
いくつかのフィールドを埋めるのを無効にしたいなら、 |
85 |
|
|
C<ignore_fields>オプションを使って下さい: |
86 |
ktats |
1.1 |
|
87 |
|
|
$output = $fif->fill(scalarref => \$html, |
88 |
|
|
fobject => $q, |
89 |
|
|
ignore_fields => ['prev','next']); |
90 |
|
|
|
91 |
|
|
=back |
92 |
|
|
|
93 |
|
|
=head1 他のモジュールからの呼び出し |
94 |
|
|
|
95 |
|
|
=head2 Apache::PageKit |
96 |
|
|
|
97 |
ktats |
1.5 |
L<Apache::PageKit>で、HTML::FillInFormを使うのは簡単です。 |
98 |
ktats |
1.1 |
<form>タグを含むいくつかのページのために、自動的に呼ばれます。 |
99 |
ktats |
1.5 |
C<fill_in_form>設定オプションを使うことで有効か無効にできます。 |
100 |
ktats |
1.1 |
|
101 |
iwai |
1.4 |
=head2 Apache::ASP v2.09 を含むそれ以降のバージョン |
102 |
ktats |
1.1 |
|
103 |
iwai |
1.4 |
HTML::FillInFormは、いまや、Apache::ASPに統合されています。次のようにすれば有効になります。 |
104 |
ktats |
1.1 |
|
105 |
|
|
PerlSetVar FormFill 1 |
106 |
|
|
$Response->{FormFill} = 1 |
107 |
|
|
|
108 |
|
|
=head1 バージョン |
109 |
|
|
|
110 |
|
|
このドキュメントは、HTML::FillInFormモジュール versin 1.00 について説明しています。 |
111 |
|
|
|
112 |
|
|
=head1 セキュリティ |
113 |
|
|
|
114 |
ktats |
1.2 |
ページにパスワードフィールドがある場合、キャッシュの問題を思いつくかもしれません。 |
115 |
ktats |
1.5 |
次のURLにこの問題についての議論があります。 |
116 |
ktats |
1.1 |
|
117 |
|
|
http://www.perlmonks.org/index.pl?node_id=70482 |
118 |
|
|
|
119 |
ktats |
1.5 |
要約すれば、ブラウザにはCGIスクリプトの出力をキャッシュするものがあり、 |
120 |
|
|
Expires ヘッダをセットすることでこれをコントロールできます。 |
121 |
|
|
たとえば、L<CGI.pm>で C<-expires> を使ったり、 |
122 |
|
|
L<Apache::PageKit>の Config.xml ファイルのC<browser_cashe>を |
123 |
|
|
I<no>にセットすることで、キャッシュをコントロールできます。 |
124 |
ktats |
1.1 |
|
125 |
|
|
=head1 バグ |
126 |
|
|
|
127 |
ktats |
1.5 |
どんなバグレポートも、tjmather@tjmather.com.に提出してください。 |
128 |
ktats |
1.1 |
|
129 |
|
|
=head1 注意書き |
130 |
|
|
|
131 |
ktats |
1.5 |
Perl 5.005 と L<HTML::Parser> version 3.08 を必要とします。 |
132 |
ktats |
1.1 |
|
133 |
ktats |
1.5 |
HTMLとPerlコードを結びつけることをせずにCGIデータをHTMLフォームに挿入できたかったので、 |
134 |
ktats |
1.1 |
このモジュールを書きました。 |
135 |
ktats |
1.5 |
CGI.pmと Embperlは、CGIデータをフォームに挿入することを可能にしますが、 |
136 |
|
|
HTMLとPerlをミックする必要があります。 |
137 |
ktats |
1.1 |
|
138 |
|
|
=head1 著者 |
139 |
|
|
|
140 |
|
|
(原文まま) |
141 |
|
|
|
142 |
|
|
(c) 2002 Thomas J. Mather, tjmather@tjmather.com |
143 |
|
|
|
144 |
|
|
All rights reserved. This package is free software; you can |
145 |
|
|
redistribute it and/or modify it under the same terms as Perl itself. |
146 |
|
|
|
147 |
|
|
=head1 SEE ALSO |
148 |
|
|
|
149 |
|
|
L<HTML::Parser>, L<Data::FormValidator>, L<HTML::Template>, L<Apache::PageKit> |
150 |
|
|
|
151 |
|
|
=head1 CREDITS |
152 |
|
|
|
153 |
ktats |
1.5 |
修正、バグレポート、ドキュメントが、以下の方々により寛大に提供されました: |
154 |
ktats |
1.1 |
|
155 |
|
|
Tatsuhiko Miyagawa |
156 |
|
|
Boris Zentner |
157 |
|
|
Patrick Michael Kane |
158 |
|
|
Ade Olonoh |
159 |
|
|
Tom Lancaster |
160 |
|
|
Martin H Sluka |
161 |
|
|
Mark Stosberg |
162 |
|
|
Trevor Schellhorn |
163 |
|
|
Jim Miner |
164 |
|
|
Paul Lindner |
165 |
|
|
Maurice Aubrey |
166 |
|
|
Andrew Creer |
167 |
|
|
Joseph Yanni |
168 |
|
|
Philip Mak |
169 |
|
|
Jost Krieger |
170 |
|
|
Gabriel Burka |
171 |
|
|
Bill Moseley |
172 |
|
|
|
173 |
|
|
Thanks! |
174 |
|
|
|
175 |
|
|
=head1 翻訳について |
176 |
|
|
|
177 |
ktats |
1.7 |
翻訳者:加藤敦 (ktat.is@gmail.com) |
178 |
ktats |
1.1 |
|
179 |
|
|
Perlドキュメント日本語訳 Project にて、 |
180 |
|
|
Perlモジュール、ドキュメントの翻訳を行っております。 |
181 |
|
|
|
182 |
ktats |
1.7 |
http://perldocjp.sourceforge.jp/ |
183 |
ktats |
1.1 |
http://sourceforge.jp/projects/perldocjp/ |
184 |
iwai |
1.6 |
http://www.freeml.com/ctrl/html/MLInfoForm/perldocjp@freeml.com |
185 |
ktats |
1.7 |
http://perldoc.jp |