php获取post原始字节

废话稍后再说,先上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function get_raw_post_data($charset = 'UTF-8') {
// 获取原始数据
$request = file_get_contents('php://input');
if ($request === '') {
return 'Parse Error: no data';
}
// 获取数据编码
$encoding = mb_detect_encoding($request, 'auto');
// 转换数据编码
if ($encoding !== $charset) {
$request = iconv($encoding, $charset, $request);
}
return $request;
}

说道这个,还是因为当时和基友添雨开发打字软件服务端的时候,他的软件只发送了一个 JSON 格式的字符串,然后我并不知道 POST 方式怎么接收!最后只能让他包裹在 hash 字段内。

然后我今天又遇到这个问题了!只有一个字符串怎么办!

上网搜索到了两种获取原始字节集的方法:

1
2
3
4
// 方法1:
$GLOBALS['HTTP_RAW_POST_DATA'];
// 方法2:
file_get_contents('php://input');

然而我查询了参考手册看到这样一句话:

Warning
This feature was DEPRECATED in PHP 5.6.0, and REMOVED as of PHP 7.0.0.

In general, php://input should be used instead of $HTTP_RAW_POST_DATA.

作为紧跟时代的弄潮儿,怎么能不应用最新技术呢?所以兼容什么的没!可!能!