I need to check if php://input
exists/isset. Does it work with PHP isset()
? What is the proper way to check it?
Try to test it with file_get_contents()
(for reading) + empty()
or boolean conversion (for testing):
<?php
$input = file_get_contents('php://input');
if ($input) {
// exists
} else {
// not exists
}
From php.net:
Note: Prior to PHP 5.6, a stream opened with
php://input
could only be read once; the stream did not support seek operations. However, depending on the SAPI implementation, it may be possible to open another php://input stream and restart reading. This is only possible if the request body data has been saved. Typically, this is the case for POST requests, but not other request methods, such as PUT or PROPFIND.
file_get_contents()
, when using this URL-wrapper, reads any content, if it is there. No matter of content structure. –
Orvieto ''
), that was posted to php://input
. I mean, if even fake base64 string would be there, it will return it as string. –
Orvieto m going to use [base64_decode](http://php.net/manual/pt_BR/function.base64-decode.php) to check for error
s in this case. –
Madaih You can get the contents of php://input
using file_get_contents
and check the return value to see if it's actually set:
$input = file_get_contents("php://input");
if ($input) {
// set
}
else {
// not set
}
isset()
will always return true in this scenario, use !empty()
or just get rid of that condition. –
Grivet file_get_contents()
returns string on success. –
Orvieto $input
is TRUE
instead. –
Medlock it returns true if variable exist and its not null
$foo = 'bar';
var_dump(isset($foo)); -> true
$baz = null;
var_dump(isset($baz)); -> false
var_dump(isset($undefined)); -> false
Suppose you are getting user input from a POST request you can check if it's a set like this
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
}
}
php://input
is where POST
or PUT
data is located, not GET
parameters. –
Polad php://input
is because you need to access the raw data. –
Polad © 2022 - 2024 — McMap. All rights reserved.