为什么通过 curl 将数据 urlencode 到 post,为什么不对表单做同样的事情?

Why urlencode data to post via curl and why not doing the same with form?

如 php 手册所述 urlencode 用于对 url 的查询部分进行编码,那么为什么 urlencode 用于在通过 c 发送之前对数据进行编码url 也是因为这些是 $_POST 值而不是查询部分?

    foreach ($data as $key => $value) {
             $value = urlencode($value);
             $req .= "&$key=$value";
    }
    //
    curl_setopt($ch, CURLOPT_POSTFIELDS, $req);

如果建议这样做,那么为什么没有必要在处理提交的表单之前通过表单对发布的数据进行编码(不适用于 curl,我的意思是只处理表单。)?

这是否意味着 curl 发送数据的方式与提交的表单不同?

你可以这样做:

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

而不是 foreach 循环。当你给出一个数组时,参数使用 multipart/form-data 编码发布。

你不应该在处理表单中调用urldecode,因为PHP在将参数放入$_GET$_POST之前自动解码参数。