PHPプログラミング
POSTリクエストの生データは、php://input のストリームを読み込む事で取得できる。
$data = file_get_contents('php://input');
通常、POSTデータは $_POST に入るので生データ取得をする必要が無いが、JavaScriptから送信するファイルアップロードを実装する際などには必ずしも $_POST がセットされないケースがあるので、そういう用法に於いて有用である。
php://input と同様に $HTTP_RAW_POST_DATA でも生データが取得できるが、php.ini で有効可しなければならないのと PHP 5.6 以降では非推奨となっているので、やはり php://input を使う事が推奨される。
サンプルコード
client.html
<input type="button" value= "click" onclick="click()">
<script>
function click(){
var js_obj = {plugin: 'jquery-json', version: 2.3};
var encoded = JSON.stringify(js_obj);
var data= encoded
$.ajax({
type: "POST",
url: 'server.php',
data: data,
success: function(data){
console.log(data);
}
});
}
</script>
server.php
print_r($_POST); // 内容なし。空で渡されるので使えない
var_dump(file_get_contents('php://input'));