首页 > 解决方案 > PHP curl 使用基本授权将表单数据发布到 REST API

问题描述

我是 PHP 新手,我正在为我在大学的一门学科开发一个简单的客户端。该客户端的主要目标是将 CRUD 转换为 JAVA API。经过一番研究,我发现对于像这样的简单客户端,人们使用 CURL。我从未使用过 curl,我不知道我是否做错了什么。当我提交表单时,它没有出现任何错误,但是当我打开邮递员时,我看到我的数据没有成功发布。如果有人可以帮助我,我将不胜感激!

HTML表格:

<form class="form" action="createActivity.php">
        <label for="name" class="labelActivityName"><b>Name</b></label>
        <input type="text" id="name" placeholder="Name" name="name">

        <label for="description" class="labelActivityDescription"><b>Description</b></label>
        <textarea id="description" placeholder="Description..." name="description"></textarea>

        <button type="submit"><b>Submit</b></button>
</form>

PHP CURL:

$url = "http://localhost:8080/myapi/actvities";

    $username = 'user';
    $password = 'user123';

    $name = (isset($_POST['name']));
    $description = (isset($_POST['description']));

    $fields = array(
        'name' => $name,
        'description' => $description
    );

    $client = curl_init();
    curl_setopt($client, CURLOPT_URL, $url);
    curl_setopt($client, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($client, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($client, CURLOPT_USERPWD, "$username:$password");
    curl_setopt($client, CURLOPT_POST, 1);
    curl_setopt($client, CURLOPT_POSTFIELDS, $fields);

    $response = curl_exec($client);
    curl_close($client);

标签: phphtmlcurl

解决方案


函数 isset() 检查是否设置了变量并返回布尔值 true 或 false。您可以使用以下代码:

if (! (isset($_POST['name']) && isset($_POST['description']))) {
    http_response_code(422);
    echo 'name and description are required.';
    exit;
}

$name = $_POST['name'];
$description = $_POST['description'];

推荐阅读