JavaScriptからPHPに文字列を送信できるようにする必要があるアプリケーションに取り組んでいます。最初は変数を介して送信したばかり$_POST
でしたが、文字列に値が挿入されていることに気付きました。
次に、データが送信中に破壊されていると想定したため、base64を使用してデータを送信するように両方の部分を再コーディングしました。文字列は間違いなく問題なく転送されていましたが、ベース64からベース16に戻すと、以前とまったく同じ間違いが発生しました。
2つの文字列(16進ダンプ)の比較を次に示します。各文字列には2つの意味のあるデータのチャンクがあり、PHPはそれらの領域の近くでのみ間違いを犯しているようです。最初の行はPHPが文字列を解釈する方法であり、2番目の行はJavaScriptから文字列を送信する方法です。
c2 b0 c2 a7 c3 9a 7a 00 00 00 c2 bb 30 4d 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0 a7 da 7a 00 00 00 00 00 00 bb 30 4d 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
これらのファントムバイトが表示されるのはなぜですか?
編集:これが私が使用しているコードです。
JavaScript:
function sendRequest(body)
{
var url = "../update/index.php";
$.post(url,{msg:body},function(data,status,jqx)
{
$("#response").html(data);
});
}
body
は、先頭が。としてハードコードされている文字列です"\u00b0\u00a7\u00da\u007a"
。
次にPHPで:
$msg =$_POST['msg'];
plain_hex_dump($msg);
plain_hex_dump
文字列を16進数として出力するだけで、上記の2つの16進数ダンプの最初の結果になります。