如何检查是否设置了 php://input


How to check if php://input is set?

我需要检查php://input是否存在/isset。它适用于 PHP isset() 吗?检查它的正确方法是什么?

尝试使用 file_get_contents()(用于读取)+ empty() 或布尔转换(用于测试)进行测试:

<?php
$input = file_get_contents('php://input');
if ($input) {
   // exists
} else {
   // not exists
}

从 php.net:

注意:在 PHP 5.6 之前,使用 php://input 打开的流只能读取一次;该流不支持查找操作。但是,根据 SAPI 实现,可能会打开另一个 php://input 流并重新启动读取。仅当已保存请求正文数据时,才可以执行此操作。通常,POST 请求是这种情况,但其他请求方法(如 PUT 或 PROPFIND)则不是这种情况。

您可以使用

file_get_contents获取php://input的内容,并检查返回值以查看它是否实际设置:

$input = file_get_contents("php://input");
if ($input) {    
    // set     
}
else {
   // not set
}

如果变量存在并且不为空,则返回 true

$foo = 'bar';
var_dump(isset($foo));        -> true
$baz = null;
var_dump(isset($baz));        -> false
var_dump(isset($undefined));  -> false

假设您正在从 POST 请求中获取用户输入,您可以检查它是否是这样的集合

 if(isset($_POST['var_name']))
 {
      //for additional checking  like if  it's not  empty do this
      if(!empty($_POST['var_name']))
      {
           //Do whatever you want here
      }
 }