Мне нужно проверить, существует ли php://input
/isset. Работает ли он с php isset()
? Каков правильный способ проверить это?
Как проверить, установлен ли вход php://?
Ответ 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
}
}