Как проверить, установлен ли вход php://?

Мне нужно проверить, существует ли php://input/isset. Работает ли он с php isset()? Каков правильный способ проверить это?

Ответ 1

Попробуйте протестировать его с помощью file_get_contents() (для чтения) + empty() или boolean conversion (для тестирования):

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

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

Из php.net:

Поток, открытый с помощью php://, вводится только один раз; поток не поддерживает операции поиска. Однако, в зависимости от SAPI реализации, может быть возможно открыть другой поток ввода php:// и перезапустить чтение. Это возможно только в том случае, если данные тела запроса был сохранен. Как правило, это относится к запросам POST, но не другие методы запроса, такие как PUT или PROPFIND.

Ответ 2

Вы можете получить содержимое php://input с помощью file_get_contents и проверить возвращаемое значение, чтобы увидеть, действительно ли оно установлено:

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

Ответ 3

он возвращает true, если существует переменная, а ее значение не равно null

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

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

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

Ответ 4

Предположим, что вы получаете пользовательский ввод от запроса POST, вы можете проверить, установлен ли он как этот

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