如php手册所述,urlencode用于编码url的查询部分,那么为什么urlencode在使用curl发送之前也应该用于编码数据,因为这些是$ _POST值而不是查询部分?
foreach ($data as $key => $value) {
$value = urlencode($value);
$req .= "&$key=$value";
}
//
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
如果建议这样做,那么为什么在处理提交的表单之前没有必要通过表单对发布的数据进行编码(不是为了curl,而是仅仅是处理表单。)?
这是否意味着curl发送的数据与提交的表单不同?
答案 0 :(得分:1)
你可以这样做:
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
而不是foreach
循环。提供数组时,参数将使用multipart/form-data
编码发布。
您不应该在处理表单中调用urldecode
,因为PHP会在将参数放入$_GET
或$_POST
之前自动对其进行解码。