In PHP I would like to be able to access PUT
and DELETE
vars globally similar to how GET
and POST
vars are accessed globally. I originally considered adding the data to $_PUT
and $_DELETE
respectively in the global namespace, but then I realized that the data for each request is stored in the message body so there's no way for there to be more than one dataset from a POST
, PUT
, or DELETE
request.
Are there any side-effects of overwriting the $_POST
variable?
i.e. str_parse( file_get_contents( 'php://input' ), $_POST );
Am I being silly, or is there a better way to access PUT
and DELETE
data?
Edit to clarify my thinking:
I am very well aware of the source of the data in $_POST
, in fact i mentioned it earlier in my question. If a HTTP POST request is sent to the server the data is stored in php://input
. If a HTTP PUT or DELETE request is sent to the server, the data is stored in the exact same place, meaning that $_POST
will be empty (as no data was POSTed
despite data being available.
A GET
request, on the other hand, is passed via the query string. This allows simultaneous passing of $_POST
and $_GET
variables. It is not possible to simultaneously pass POST
and PUT or DELETE
variables.
If I overwrite $_POST
from php://input
on PUT
and or DELETE
requests, there is no data loss.
The alternative of adding:
global $_PUT;
global $_DELETE;
to the beginning of functions seems silly, as I'll only be able to use one at a time anyway.
My first question, which is the one I really want answered, is about what side-effects or issues exist in overwriting $_POST
. I can't possibly be the first person to try something as silly as:
$_POST['foo'] = 'bar';
I'm just concerned that if I do anything similar that it might not be preserved across scopes.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…