• 注册
  • 前端后端 前端后端 关注:336 内容:46

    php://input 和 $_POST 哪个获取数据更好?区别是什么?

  • 查看作者
  • 打赏作者
    • 年SVIP2
      靓号:9999
      宇宙最帅

      php://input 和 $_POST 都是用于在 PHP 中获取 HTTP 请求体数据的方式,但它们有不同的用途和适用场景。

      php://input 和 $_POST 哪个获取数据更好?区别是什么?

      两者区别(PHP手册中摘取)

      1. 当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本。

      2. php://input 是个可以访问请求的原始数据的只读流。 enctype=”multipart/form-data” 的时候php://input 是无效的。

      $_POST

      $_POST 是 PHP 中的一个超全局数组,用于获取来自 POST 请求的数据。

      它通常用于处理表单提交数据,如用户登录、注册、提交评论等。

      数据已经经过 PHP 的解析和处理,可以直接通过关联数组形式访问。

      自动处理了 URL 编码和字符转义,使数据更易于使用和安全。

      $username = $_POST['username'];
      $password = $_POST['password'];

      php://input

      php://input 是 PHP 中的输入流,允许直接访问请求体的原始数据。

      它通常用于处理非表单数据,如 JSON、XML 等等,或者在需要自己解析请求体的情况下使用。

      数据未经 PHP 的解析,需要手动解析和处理,通常使用 file_get_contents 函数获取。

      $input_data = file_get_contents('php://input');
      $request_data = json_decode($input_data, true);

      哪个更好取决于你的需求:

      如果你处理的是普通的表单提交数据,$_POST 是更常见和方便的选择,因为它会自动处理数据的解析和安全性。

      如果你需要处理非标准数据格式,比如接收 JSON 数据,或者需要对请求体进行特殊处理,那么 php://input 可能更合适,因为它提供了对原始数据的直接访问。

      在实际应用中,通常会根据具体情况来选择使用哪种方法,有时甚至可以结合使用两者。如果你只处理标准的表单提交数据,$_POST 更容易使用和维护。如果你需要更高度的控制或处理非标准数据格式,php://input 可以满足这些需求。

      请登录之后再进行评论

      登录
    • 发布
    • 做任务
    • 实时动态
    • 偏好设置
    • 帖子间隔 侧栏位置: