php 如何获取 post 传递的raw 数据
封面图
•
2025-10-13
•
PHP
114
0
0
0
在 PHP 中,如果你通过 HTTP POST 请求传递的是 **raw 数据**(比如 JSON、XML 或者纯文本),而不是表单数据(`application/x-www-form-urlencoded` 或 `multipart/form-data`),那么你不能使用 `$_POST` 超全局变量来获取这些数据。 ### 正确的方法是使用 `file_get_contents("php://input")` PHP 提供了 `php://input` 这个只读流,可以用来读取原始的 POST 数据。 --- ## ✅ 示例:获取 JSON 格式的 raw POST 数据 ```php <?php // 读取原始 POST 数据 $rawData = file_get_contents("php://input"); // 将 JSON 字符串转换为 PHP 数组 $data = json_decode($rawData, true); // 检查是否解析成功 if (json_last_error() === JSON_ERROR_NONE) { print_r($data); } else { echo "JSON 解析失败"; } ?> ``` --- ## 📌 注意事项: - `$_POST` 只能获取表单提交的数据(如 `application/x-www-form-urlencoded` 或 `multipart/form-data`)。 - `php://input` 可以获取所有类型的原始 POST 数据(包括 JSON、XML、文本等)。 - 如果你使用的是 `curl` 发送 POST 请求,确保设置正确的 `Content-Type` 头(如 `application/json`)。 --- ## 🔁 其他常见用法示例: ### 获取纯文本数据: ```php $rawText = file_get_contents("php://input"); echo "接收到的文本数据是: " . $rawText; ``` ### 获取 XML 数据: ```php $xmlData = file_get_contents("php://input"); $xml = simplexml_load_string($xmlData); print_r($xml); ``` --- ## ✅ 总结 | 数据类型 | 方法 | 说明 | |----------|------|------| | 表单数据 | `$_POST` | 适用于 `application/x-www-form-urlencoded` 或 `multipart/form-data` | | JSON/XML/文本 | `file_get_contents("php://input")` | 适用于任何原始 POST 数据 | 如果你有具体的请求格式或问题,欢迎继续提问!
上一篇:
PHPStorm怎么配置xdebug工具并使用?
下一篇:
PHP中的序列化方法性能对比
标题录入,一次不能超过6条
留言
评论