- 追加された行はこの色です。
- 削除された行はこの色です。
*attachプラグインでencode_hintが二重出力される [#j3b12a5a]
* encode_hintが二重出力される問題[#j3b12a5a]
元タイトル : attachプラグインでencode_hintが二重出力される
-ページ: BugTrack
-投稿者: [[Ratbeta]]
-優先順位: 普通
-状態: 提案
-カテゴリー: プラグイン
-投稿日: 2003-11-17 (月) 17:36:07
-バージョン:
**メッセージ [#g64bba44]
attachプラグインを張ったページでプレビューを行った場合、~
<form enctype="multipart/form-data" action="http://(url)" method="post">
<div><input type="hidden" name="encode_hint" value="ぷ" /></div>
<div><input type="hidden" name="encode_hint" value="ぷ" /></div>
というように、encode_hintが二重出力されてしまいます。~
内容が同じなので、影響は少ないですが、~
HTML的にはあまり良くないような気がします。~
----
-スマートではないですが、「既に挿入されている場合は挿入しない」アプローチだとこんな感じでしょうか。 -- [[ぱんだ]] &new{2003-11-17 (月) 21:17:46};
diff -u -r1.9 plugin.php
--- plugin.php 27 Sep 2003 15:26:19 -0000 1.9
+++ plugin.php 17 Nov 2003 12:03:39 -0000
@@ -93,7 +93,8 @@
$retvar = call_user_func('plugin_'.$name.'_action');
// 文字エンコーディング検出用 hidden フィールドを挿入する
- return preg_replace('/(<form[^>]*>)/',"$1\n<div><input type=\"hidden\" name=\"encode_hint\" value=\"ぷ\" /></div>",$retvar);
+ return preg_replace('/(<form[^>]*>)(?!\n<div><input type="hidden" name="encode_hint")/',
+ "$1\n<div><input type=\"hidden\" name=\"encode_hint\" value=\"ぷ\" /></div>",$retvar);
}
//プラグイン(convert)を実行
@@ -118,7 +119,8 @@
}
// 文字エンコーディング検出用 hidden フィールドを挿入する
- return preg_replace('/(<form[^>]*>)/',"$1\n<div><input type=\"hidden\" name=\"encode_hint\" value=\"ぷ\" /></div>",$retvar);
+ return preg_replace('/(<form[^>]*>)(?!\n<div><input type="hidden" name="encode_hint")/',
+ "$1\n<div><input type=\"hidden\" name=\"encode_hint\" value=\"ぷ\" /></div>",$retvar);
}
//プラグイン(inline)を実行
-<form>直後に別の何かを埋め込むフィルタが噛んでくると途端に動かなくなります。何かフラグを設けた方が安全かもしれません。 -- [[ぱんだ]] &new{2003-11-17 (月) 21:17:46};
-[[開発談義]]で発生したpcomment設置ページにvoteプラグインがあるとpcommentで書き込みができなくなる症状も<form>がらみの問題でしたね… -- [[reimy]] &new{2003-11-17 (月) 22:41:11};
-calendar_viewやincludeなどのプラグインを用いて他のページを内部で呼び出した場合にもこの問題が発生するようです。editプラグインによるプレビューで問題が発生するのも同じ原因であると考えられます。 -- [[Ratbeta]] &new{2005-03-10 (木) 17:43:45};
--また、先に挙げたプラグインを使ってページを二重三重に呼び出した場合、その数に応じて出力数が無限に増殖されてしまうようです。 -- [[Ratbeta]] &new{2005-03-10 (木) 17:44:38};
-- encode_hintを跡付けする処理事態を無くするアイデアがいりそうですね -- [[henoheno]] &new{2005-03-10 (木) 23:21:34};
#comment