如何检查是否设置了php://输入?

时间:2013-09-25 17:43:39

标签: php input wrapper isset

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

4 个答案:

答案 0 :(得分:13)

尝试使用file_get_contents()(用于阅读)+ empty()boolean conversion进行测试(用于测试):

<?php
$input = file_get_contents('php://input');

if ($input) {
   // exists
} else {
   // not exists
}

来自php.net

  

注意: 在PHP 5.6 之前,使用php://input打开的流只能读取一次;流不支持搜索操作。但是,根据SAPI实现,可能会打开另一个php://输入流并重新开始读取。只有在保存了请求正文数据后才能执行此操作。通常,这是POST请求的情况,但不是其他请求方法,例如PUT或PROPFIND。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

如果变量存在且非空

,则返回true
$foo = 'bar';
var_dump(isset($foo));        -> true

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

var_dump(isset($undefined));  -> false

答案 3 :(得分:-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
      }
 }