PHP cURL 作为删除使用 POSTFIELDS

PHP cURL as DELETE using POSTFIELDS

在我的例子中,用户已登录并想删除他的帐户。 因此,他触发了一个 POST 表单,通过确认他的密码来重新验证该过程。

现在我想发送一个 cURL DELETE 到 api/server,同时发送确认密码。

我的做法是:

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL => "https://www.myurl.com/v1/users",
    CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => json_encode(['cnfpwd' => $_POST['cnfpwd']]), //confirmed password
    CURLOPT_HTTPHEADER => array('X-API-KEY: '$apiKey),
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "DELETE",
));

$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);

//For testing purposes only
print_r($response);
print_r($data);

如果这种方法是正确的,我将如何获得 API/server 端的 POSTFIELDS? 由于这是一个 DELETE 请求,$_GET、$_POST、$_REQUEST 为空。

编辑: 用于测试目的的 api 代码:

<?php
if($_SERVER['REQUEST_METHOD'] == "DELETE"){
   echo"POST: ";print_r($_POST);
}
?>

结果是:

POST: Array ( )

您应该能够通过

获得请求的正文
$data = file_get_contents('php://input');

我最终的解决方案是:

$parameters = file_get_contents("php://input");
$parameters = json_decode($parameters, true);

@Paolos 解决方案是正确的,我只需要添加第二行以便将参数作为数组访问。