2022/08/18 01:11 JST
Geeklog Japan Forums
記事の実体参照が保持されない。
状態: オフライン
kazuhiro
Forum User
Newbie
登録日: 2006/12/18
投稿数: 3
htmlモードで記事中に&のような実体参照を書いてから保存し、その後に編集しようとすると、フォーム上では実体参照が実体になってしまいます。
例えば「A & B」のように書いて保存します。 保存した記事を表示すると「A & B」の様に表示されます。 その記事を更に編集しようとすると、プレビューには「A & B」と表示されますが、フォームにも「A & B」と表示されてしまいます(「A & B」となって欲しい)。
原因はフォームのtextareaの初期値として{stroy_introtext}や{story_bodytext}等の変数を使用している事で、本来はこれらの表示用のテキストを更にhtmlspecialchars等でエスケープした内容を使用しなければならないように思います。
私は public_html/admin/story.php を改造して新たなテンプレート用の変数を用意し、テーマの admin/story/atoryeditor.thtml がそれらの変数を使用するようにする事で対処しました。 本家にも報告されていたようですが、意図が正しく伝わらないままにcloseされているように思われます。
状態: オフライン
mystral-kk
Site Admin
Admin
登録日: 2006/03/23
投稿数: 1023
場所:福岡県
1.4.0sr5で現象を確認しました。対処法としては,admin/story.phpの710行目付近にある
$story_templates->set_var('story_introtext', $newintro);
の直前に
if ($A['postmode'] != 'plaintext') {
$newintro = htmlspecialchars($newintro, ENT_QUOTES);
}
を追加,718行目付近にある
$story_templates->set_var('story_bodytext', $newbody);
の直前に
if ($A['postmode'] != 'plaintext') {
$newbody = htmlspecialchars($newbody, ENT_QUOTES);
}
を追加でいけそうです。
-- mystral-kk, "Every cloud has a silver lining."
PHP Formatted Code
$story_templates->set_var('story_introtext', $newintro);
PHP Formatted Code
if ($A['postmode'] != 'plaintext') {
$newintro = htmlspecialchars($newintro, ENT_QUOTES);
}
PHP Formatted Code
$story_templates->set_var('story_bodytext', $newbody);
PHP Formatted Code
if ($A['postmode'] != 'plaintext') {
$newbody = htmlspecialchars($newbody, ENT_QUOTES);
}
-- mystral-kk, "Every cloud has a silver lining."
状態: オフライン
mystral-kk
Site Admin
Admin
登録日: 2006/03/23
投稿数: 1023
場所:福岡県
ちなみに1.4.1beta1では,先ほどポストした内容の修正(htmlspecialchars())が行われていて,ご指摘の現象は起きないようです。
-- mystral-kk, "Every cloud has a silver lining."
-- mystral-kk, "Every cloud has a silver lining."
状態: オフライン
mystral-kk
Site Admin
Admin
登録日: 2006/03/23
投稿数: 1023
場所:福岡県
どういたしまして。また何かありましたら,気軽にどうぞ。
-- mystral-kk, "Every cloud has a silver lining."
-- mystral-kk, "Every cloud has a silver lining."
状態: オフライン
kazuhiro
Forum User
Newbie
登録日: 2006/12/18
投稿数: 3
御教示いただいた修正による不具合に気づいたので報告します。1.4.1rc1でも再現しました。htmlモードで
[code]>[/code]
の様に書くと[code]と[/code]で囲まれた部分が過剰にエスケープされるようになってしまいました。すなわち、上記のように書いた記事を保存し、再度編集しようとすると
[code]>[/code]
に変化します。更にそのまま保存、再編集(あるいはプレビュー)すると
[code]>[/code]
になります。更に繰り返すとどんどんamp;が増殖します。
私自身は[code]タグは使用していませんが、ソースを眺めていたら存在に気づいて確認した次第です。
minimalな変更で済ますのであればhtmlspecialcharsを入れた少し前に[code]タグを生成しているところがあるので、ここで該当部分に対してCOM_handleCodeの逆操作を行えばよさそうです。
状態: オフライン
mystral-kk
Site Admin
Admin
登録日: 2006/03/23
投稿数: 1023
場所:福岡県
ご指摘ありがとうございます。おっしゃるとおり,[code]~[/code]内のコードが複数回エスケープされることになります。簡単な対処方法を思いつかないので,少し考えてみます。
-- mystral-kk, "Every cloud has a silver lining."
-- mystral-kk, "Every cloud has a silver lining."
時刻はすべて JST , 現在の時刻は 01:11 AM
- 通常
- 注目トピック
- ロック済
- 新着
- 注目トピック 新着
- ロック済トピック 新着
- ゲストユーザの投稿を見る
- 投稿可能
- 一部のHTMLを許可
- バッドワードをチェック
検索
ユーザー機能
リモートログイン
イベント
-