【问题标题】:How to check if any parameter is present in POST in PHP如何检查PHP中的POST中是否存在任何参数
【发布时间】:2013-07-23 07:24:07
【问题描述】:

我通过 POST 传递参数,这些参数用 Json 编码。我已经在 PHP 文件中捕获了参数。 JSON编码的参数如下:

{
    "id": "5",
    "name": "abcd",
    "imei": "1234"
}

首先我将它们捕获如下:

$entityBody = file_get_contents('php://input');

然后我将它们解码如下:

$entityBody = json_decode($entityBody, true);

现在我可以按如下方式访问 id:

 $entityBody['id']

我想知道,如果有任何参数说,POST 中存在“描述”。如果有人帮助我如何做到这一点,我将非常感激。谢谢。

【问题讨论】:

  • 你能用isset吗?喜欢if(isset($_POST['something'])) ...
  • 也许你的意思是$entityBody = json_decode($_POST['json'], true); 但无论如何一切都很好,问题是什么?像$entityBody['description'] 一样访问它
  • 你想知道什么,如果 'description' 出现在 POST 中或 'description' 出现在 $entityBody 中?
  • @jcsanyi 我只是想澄清他的问题。在我看来,您的回答令人困惑,而不是我的评论。

标签: php json post


【解决方案1】:

使用isset 检查 POST 中是否存在“描述”

if(isset($_POST['description'])) {
     //your code here
}

编辑

由于你使用file_get_contents('php://input');,所以你必须使用

if (isset($entityBody['description'])) {
    //your code here
}

【讨论】:

  • 请重新阅读完整的问题。由于 post 参数被编码为 JSON,它们不会被 PHP 自动解释,并且不会在 $_POST 数组中。
  • @jcsanyi 我认为您没有正确阅读问题,OP 说'description' is present in POST 不是 JSON 格式。 :)
  • 在 POST 中与在 $_POST 中不同。
  • @YogeshSuthar 我对此感到困惑。我刚刚观察到的一件事是,如果键在双引号中,如上所示,代码可以正常工作,但是当键在单引号中时它不起作用,例如,如果它的形式是“id”:“id value”。您能建议如何处理吗?
【解决方案2】:

这确实和大多数其他答案所说的一样简单 - 但您只需要检查您的 $entityBody 数组,而不是 $_POST 数组。

if (isset($entityBody['description'])) {
    // do something
}

为了澄清那些仍然感到困惑的人,如果 POST'ed 数据以标准 HTML 表单编码之一(application/x-www-form-urlencoded 或 multipart/form-data)进行编码,它将被自动解码并在$_POST 数组中可用。

在这种情况下,OP 改为以自定义 (json) 格式发布数据。这意味着 $_POST 数组将为空,他们必须 manually read and decode the POST contents themselves - 看来他们已经开始工作了。

另见:What is the Raw Post Data

【讨论】:

    猜你喜欢
    • 2017-09-20
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2012-12-21
    • 2021-12-26
    • 2014-05-21
    • 2019-12-10
    • 2012-10-24
    相关资源
    最近更新 更多