我已经看过good posts about php://输入vs $ _POST,但如果我需要检查两者,我仍然感到困惑。或者只是检查php://输入。有什么想法吗?
我在这里做的多余事情是什么?还是必要的?
<?php
if( $_POST ) {
// $_POST variables are set, do the stuff
} else {
// get php://input
$php_input = file_get_contents("php://input");
if( $php_input ) {
// php input exists, do the stuff
$php_postdata = json_decode($php_input);
// ...
} else {
// no $_POST and no php://input, so throw an error
echo 'Error';
exit();
}
}
?>
修改
我不希望同时输入$ _POST和php://;一个或另一个。用例是当我通过jQuery访问PHP时获得$ _POST,当通过AngularJS访问PHP时我得到php://输入。
答案 0 :(得分:0)
你的问题是&#34;我需要检查两者,还是仅检查一个。&#34; This question's answer准确地解释了每个中的内容以及它们之间的差异。
我们无法知道您需要检查哪一个,但如果您阅读了该问题及其答案,您将知道哪个人拥有您需要的数据。如果您只需要合并两个输入,我们需要知道您希望获得什么类型的数据 - 例如,如果它以application/json
的形式进入,您可以这样做:
$_POST = array_merge($_POST, json_decode(file_get_contents("php://input"), true));
编辑:知道这是针对angular的,我会用json_decoded输入覆盖$ _POST字段:
if (empty($_POST)) {
$_POST = json_decode(file_get_contents("php://input"), true));
}
或者以一种显示在$_POST
变量中的方式对Angular POST进行数据处理,a very detailed guide here解释了如何执行此操作。