HTML の特殊文字の入力がうまくできずにいます

2016年2月11日 at 22:35

お世話になります

掲題の件について質問したのですが、投稿時HTMLがエスケープされてしまったので、
画像にして質問させていただきました

よろしくお願いいたします


---- 質問 ---

HTML の特殊文字の入力について

お世話になっております

concrete5.7.5.6 / XSERVER 環境です

症状1:記事ブロックタイプで

 1.aaa という文字列を入力する
 2.保存する
 3.正常に aaa と表示されます。
 4.編集画面にする
 5.aaa が タグが有効になった状態で表示されます。
 5.HTML 入力モードに切り替えてると aaa が、エスケープされる表示されています。
6.この状態で保存すると、 タグが有効になった表示状態になります。

症状2:HTML ブロックタイプで

 1.<h1>aaa</h1> という文字列を入力する
 2.保存する => 正常に aaa と表示されます
 3.編集します。
 4.編集画面に、aaa と表示されます。
 5.保存すると、 タグが有効になった表示状態になります。


わざわざエスケープした文字が、無効化されてしまうので < > が入力できない状況です。
こちら、なんらか、回避する方法ないでしょうか?

添付: question.png
タグ:

Re: HTML の特殊文字の入力がうまくできずにいます

2016年2月12日 at 4:34
確かにここ挙動おかしいです。

htmlブロックはh()を使っているのですが、h関数はdouble_encode引数がtrueに設定されているのでこのような挙動になっているようです。
下記のとおり変更で、うまく動きました。

concrete/blocks/html/form_setup_html.php 3行目を下記に修正

<div id="ccm-block-html-value"><?php echo h($content)?></div>



<div id="ccm-block-html-value"><?php echo htmlspecialchars($content,ENT_QUOTES,APP_CHARSET)?></div>

記事ブロックも同様だと思うのですが、調査中です。
本家にプルリクエスト送ります。
 

Re: HTML の特殊文字の入力がうまくできずにいます

2016年2月12日 at 7:46
助かります!

HTMLの特殊文字を勝手に復元されると、
まずいコードが動いてしまうかもしれないので、修正を期待しています
 

Re: HTML の特殊文字の入力がうまくできずにいます

2016年2月12日 at 14:32
記事ブロックの修正箇所です。

concrete/src/Editor/RedactorEditor.php 77行目

$html = sprintf('<textarea data-redactor-editor="%s" name="%s">%s</textarea>', $identifier, $key, $content);

$html = sprintf('<textarea data-redactor-editor="%s" name="%s">%s</textarea>', $identifier, $key,htmlspecialchars($content,ENT_QUOTES,APP_CHARSET));
 

Re: HTML の特殊文字の入力がうまくできずにいます

2016年2月12日 at 22:20
こちらも助かります。次のバージョンで merge されてると嬉しいですね・・・。
 

Re: Re: HTML の特殊文字の入力がうまくできずにいます

2016年2月14日 at 15:23
htmlブロック
記事ブロック
ともにマージされました。