PHP curl для POST данных формы в REST API - PullRequest
0 голосов
/ 28 января 2020

Я новичок в 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="comment" class="labelActivityDescription"><b>Description</b></label>
    <textarea id="description" placeholder="Description..." name="description"></textarea>

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

PHP

$url = "http://localhost:8080/tourism/api/activities";

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

$fields = array(
    'name' => $_POST['name'],
    'description' => $_POST['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, count($fields));
curl_setopt($client, CURLOPT_POSTFIELDS, $fields);

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

Ответы [ 2 ]

3 голосов
/ 28 января 2020

Вы должны использовать метод формы POST, потому что по умолчанию метод from равен GET, и вы должны собрать данные с помощью $ _POST, попробуйте следующий код:

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

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

    <button type="submit"><b>Submit</b></button>
</form>
0 голосов
/ 28 января 2020

Вы должны добавить method = 'post' в свой тег формы и добавить атрибут имени к тегу кнопки

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

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

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

Ваш php код должен выглядеть следующим образом -

       if(isset($_POST['submit']))
        {
        $url = "http://localhost:8080/tourism/api/activities";

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

        $fields = array(
            'name'=>($_POST['name']),
            'description'=>($_POST['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, count($fields));
        curl_setopt($client, CURLOPT_POSTFIELDS, $fields);

        $response = curl_exec($client);
        curl_close($client);
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...