記事の実体参照が保持されない対策

月曜日, 12月 18 2006 @ 09:48 午前 JST

投稿者: kazuhiro

(2006/12/19 追記) ここに書かれた対策は使用する必要はありません。 フォローの記事を参照して下さい。

Geeklogの記事を書く際に記事に直接実体参照を書き込む事があったのですが、その記事を編集しようとすると実体参照が実体に変化するという不具合に遭遇しました。例えば記事に

&テストです。

のように記入して保存します。記事を表示するとこの部分は「&テストです。」になります。 そして、この次にその記事の編集を行います。 フォームには先程入力した本文が表示されるのですが、入力した文が「&テストです。」から「&テストです。」に変化します。原因はテンプレート(template_name/admin/story/storyeditor.thtml)のコードが

<textarea name="introtext" cols="70" rows="12">{story_introtext}</textarea></td>

等のように、textareaの初期値に、表示に使われる{story_introtext}という変数をそのまま使用している事が原因です。textareaの初期値に使うのであればhtmlspecialchars等で実体参照に使われている&を更に実体参照に変えないといけません。 公開ディレクトリ以下のadmin/story.phpに対して新たなテンプレート用の変数を用意させて対処しました。

直接記入しているタグの<, >もまずい気がしてきましたがどのみちhtmlspecialcharsを使う場合はそっちも変換されてしまうので未追求です。

(2006/12/19 追記) バックスラッシュも消えるという話題がありました。 実体参照が使えれば逃げれなくはないですが、頻繁に使う場合だと厄介ですね。

(2006/12/19 更に追記) そのまんまなエントリもありました。 このままだと永遠に直らなさそうなので日本語サイトに報告しておく事にしました(本家は登録できなかった為)。

タグ:Geeklog

コメント (0件)


Kazuhiro's blog
http://ikazuhiro.s206.xrea.com/article.php/20061218094824227