0

PHP 5.3 を実行し、マジック クォートをオンにしたサーバーがあります。

magic_quotes_gpc オン オン
magic_quotes_runtime オフ オフ

サニタイズされていない (要素ペイロードに引用符、&、<、> がある) XML を含む POST (CONTENT_TYPE: application/x-www-form-urlencoded) を受け取ると、SimpleXML はそれを解析できません。

生の $_POST ダンプを見ると、XML は最初の不正な文字から切り捨てられています。これは前に見たことがない。

次に、htmlspecialchars を追加したところ、問題なく動作し、SimpleXML で XML を解析できるようになりました。

$payload = htmlspecialchars(stripslashes(trim($postXMLPayload)));

これは、違法ではありますが完全な XML が実際に $_POST 配列にあることを示唆していますが、それを見ようとすると切り捨てられます。

$_POST の値を電子メールで送信し、それをデータベース化していますが、どちらの場合も $_POST の値は切り捨てられています。

$_POST 値を取得する方法は次のとおりです

if(isset($_POST)){

foreach($_POST as $k=>$v){

    if(preg_match('/^\<\?xml/',trim($v))){

        $postXMLPayload = $v;
        break;
    }

}

}

誰かがこれを説明できますか?

ありがとう

4

0 に答える 0