内部に wp_editor があり、非常によく似た 3 つのフォームがあります。
<tr valign="top">
<th scope="row">
<label for="mymessage">Message</label>
</th>
<td>
<?php wp_editor(
$mymessage,
'mymessage',
array(
'media_buttons' => false,
)
) ?>
<input type="hidden" id="mymessage" name="mymessage" value=""/>
</td>
</tr>
フォームを送信すると、最初にエディターのコンテンツが javascript を使用して隠しフィールドに入ります。
$('#my_form').submit(function(){
if ($("#wp-mymessage-wrap").hasClass("tmce-active")){
$('#my_message').val(tinyMCE.activeEditor.getContent());
}else{
$('#my_message').val($('#mymessage').val());
}
return true;
});
次に、symfony アクションであるアクションに移動しexecuteUpdate
ます。
そのアクションの最初の行で、$_POST の内容を出力します。
メッセージとして「こんにちは」を入力すると、各フォームの結果は次のようになります。
\"hello\"
- これは次のように保存されます"hello"
- 1 回エスケープされます - 正しい方法
\\\"hello\\\"
- 次のように保存されます\"hello\"
- 2 回エスケープされます - 追加のスラッシュ
\\\\\\\"hello\\\\\\\"
-次として保存されます\\\"hello\\\"
- 4 回エスケープされます - 追加の 3 つのスラッシュ
魔法の引用符がオフになっています - phpinfo() を出力して確認しました。
3 つの異なるフォームがメッセージを異なる方法でエスケープするのはなぜですか? また、それらすべてを一度だけエスケープするにはどうすればよいですか?
私のフォームはワードプレスにあり、呼び出されるアクションは symfony である私の API に送られます。
どんなアイデアでも大歓迎です