0

这里是否有人尝试使用 PHP 发布值并使用 CURL 在 c++ 上获取所述值。我已经使用我在谷歌上搜索过的代码进行了尝试,但 CURL 的结果是页面的 html 组合。

PHP

<html>
<head><title>Test Page</title></head>
<body>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
        <p>Name:</p><input type="text" name="name">
        <input type="submit">
    </form>
    <?php
        if($_SERVER["REQUEST_METHOD"]=="POST")
        {
            $name = $_POST['name'];
            if(empty($name))
                echo "Name is empty";
            else
                echo $name;
        }
    ?>
</body>

C++ 代码

#include <iostream>
#include "json/json.h"
#include <curl/curl.h>
#include <string.h>

using namespace std;

static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
{  
     ((string*)userp)->append((char*)contents, size * nmemb);
     return size * nmemb;
}

int main()
{
     CURL *curl;
     CURLcode curl_res;
     string rBuffer;
     string *s = new string("");

     curl_global_init(CURL_GLOBAL_ALL);

     curl = curl_easy_init();
     if(curl)
     {
         curl_easy_setopt(curl, CURLOPT_URL, "192.168.1.106/testwebserver/index.php");
         curl_easy_setopt(curl, CURLOPT_POST, 1);
         curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=test");
         //curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
         //curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
         //curl_easy_setopt(curl, CURLOPT_WRITEDATA, s);
         curl_res = curl_easy_perform(curl);
         if (res != CURLE_OK)
             fprintf(stderr, "curl_easy_perform() failed: %s\n",    curl_easy_strerror(curl_res));
         curl_easy_cleanup(curl);
    }
 }

我真的很感激帮助。

4

1 回答 1

0

您的 C++ 脚本会获取整个 PHP 响应。

也就是包括<html> <head> <body>等等。

如果您只想要回声的响应,请使用以下命令:

   <?php
        if($_SERVER["REQUEST_METHOD"]=="POST")
        {
            $name = $_POST['name'];
            if(empty($name))
                echo "Name is empty";
            else
                echo $name;
        }
    ?>

或更短:

<?php
  echo isset($_POST['name'])? $_POST['name'] : "Name is empty" ;
?>
于 2021-10-05T12:26:02.297 回答