0

内部に 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 に送られます。

どんなアイデアでも大歓迎です

4

2 に答える 2

0

symfony の方法で POST データにアクセスします。

$request->request->get('mymessage')

または、FormTypes で正しい方法で実行してください: http://symfony.com/doc/current/book/forms.html

于 2013-09-15T14:46:20.490 に答える
-1

魔法の引用符をオフにします。

ドキュメントを参照してください: http://de3.php.net/magic_quotes特にhttp://de3.php.net/manual/en/security.magicquotes.disabling.php

于 2013-09-15T14:38:16.153 に答える