現在稼動中のASPでHTMLタグをエスケープするとなんかおかしくなるパターンがあったので、調べてみた。
どうやらHTML::FillInFormのバグっぽい。
INPUTタグの箇所でnameが同じ複数の項目に配列でセットすると、重複してHTMLタグがエスケープされるようです。
・template
HTML:
-
<input type="text" id="flow_item_0" name="flow_item" size="55" maxlength="255"/>
-
<input type="text" id="flow_item_1" name="flow_item" size="55" maxlength="255"/>
-
<input type="text" id="flow_item_2" name="flow_item" size="55" maxlength="255"/>
-
<input type="text" id="flow_item_3" name="flow_item" size="55" maxlength="255"/>
-
<input type="text" id="flow_item_4" name="flow_item" size="55" maxlength="255"/>
・fill_formに渡す配列(Data::Dumperにて確認)
CODE:
-
'flow_item' => [
-
'<a href="#">あ11</a>',
-
'<a href="#">い22</a>',
-
'<a href="#">う33</a>',
-
'<a href="#">え44</a>',
-
'<a href="#">お55</a>',
-
],
・出来上がるHTML
HTML:
-
<input maxlength="255" value="<a href="#"/>あ11" name="flow_item" id="flow_item_0" type="text" size="55">
-
<input maxlength="255" value="<a href="#">い22</a>" name="flow_item" id="flow_item_1" type="text" size="55"/>
-
<input maxlength="255" value="<a href="#">う33</a>" name="flow_item" id="flow_item_2" type="text" size="55"/>
-
<input maxlength="255" value="<a href="#">え44</a>" name="flow_item" id="flow_item_3" type="text" size="55"/>
-
<input maxlength="255" value="&lt;a href=&quot;#&quot;&gt;お55&lt;/a&gt;" name="flow_item" id="flow_item_4" type="text" size="55"/>
うっはーー!配列が増えると増えるだけエスケープされていくじゃん!!ひでー。
てことで、モジュールを以下のように変更。
うーん、これでほんとに大丈夫なんかなぁ…。
PERL:
-
$ diff FillInForm.pm.org FillInForm.pm
-
305a306
-
+ last;
- Newer: [Perl][CPAN] Template::Plugin::GD::Graph::pie3d ( Template-GD-2.66 ) の バグ
- Older: [Windows][VMWare][IE] 検証用の WindowsXP を VMWare Server にて動作させる
Comments:1
- [ま] 08-04-22 (火) 18:52
-
2.00 でだけど、指摘している人がいました。
http://rt.cpan.org/Public/Bug/Display.html?id=34081
そのうち直るんじゃないかと…。
Trackbacks:0
- Trackback URL for this entry
- http://blog.kaburk.com/lang/perl/bug-html-fillinform.html/trackback
- Listed below are links to weblogs that reference
- [Perl][CPAN] HTML::FillInForm 1.06 のバグ from [ま]技術雑記


































