私の質問
私の質問は、HTMLをphpからjavascriptオブジェクト内の変数(この場合はace-editorの値変数)に正しく解析することについてです。
私の問題
は、HTMLとCSSのテキストエリアがあり、HTMLがデータベースから取得され、croppieのフィールドに挿入する必要があります。現在、PHPのjson_encode機能を使用して変数内に配置していますが、それでもそうです。値から脱出します。
私のコード
<?php
$css = ($modify) ? trim($template->style()) : "";
$html = ($modify) ? trim( $template->html() ) : "";
$html = json_encode($html);
$css = json_encode($css);
?>
YUI().use(
'aui-ace-editor',
function(Y) {
var editorhtml = new Y.AceEditor({
boundingBox: '#editor-html',
height: '400',
mode: 'html',
value: '<?php echo substr( $html, 1, -1 ); ?>',
width: '100%',
showPrintMargin: false
}).render();
var editorcss = new Y.AceEditor({
boundingBox: '#editor-css',
height: '400',
mode: 'css',
value: '<?php echo substr( $css, 1, -1 ); ?>',
width: '100%',
showPrintMargin: false
}).render();
}
);
これを
使用して、管理可能な特定のテンプレートを開くと、テキストエリアが表示されなくなります(エースエディターを読み込めなかったため)。正確な666行目に関連するランダムエラーが発生します。 HTMLが格納される行。json_encodeの出力を正しくサニタイズしました。
このスクリーンショットでは、挿入されるHTML / cssを確認できます。しかし、問題はHTMLが配置されている666行目で発生します。
スクリーンショットが読めない場合は、ここをクリックしてください
だから私の質問は..
なぜそれはHTMLをオブジェクトに正しく解析しないのですか?私はそれを正しく消毒していませんか、それとも何かが足りませんか?
問題は、$html
文字列に一重引用符が含まれているためです。それらをエスケープするか、二重引用符を使用してみてください
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加