13

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

4

4 回答 4

18

尝试使用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。

于 2013-09-25T17:46:04.517 回答
2

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

$input = file_get_contents("php://input");
if ($input) {    
    // set     
}
else {
   // not set
}
于 2013-09-25T17:45:56.873 回答
1

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

$foo = 'bar';
var_dump(isset($foo));        -> true

$baz = null;
var_dump(isset($baz));        -> false

var_dump(isset($undefined));  -> false
于 2013-10-14T10:51:55.587 回答
-2

假设您从 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
      }
 }
于 2013-09-25T17:50:10.650 回答