【发布时间】:2015-07-26 08:51:54
【问题描述】:
如 php 手册中所述,urlencode 用于编码 url 的查询部分,那么为什么在通过 curl 发送之前使用 urlencode 对数据进行编码,因为这些是 $_POST 值而不是查询部分?
foreach ($data as $key => $value) {
$value = urlencode($value);
$req .= "&$key=$value";
}
//
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
如果建议这样做,那么为什么在处理提交的表单之前不需要通过表单对发布的数据进行编码(不是为了 curl,而是我的意思是处理表单。)?
这是否意味着 curl 发送数据的方式与提交的表单不同?
【问题讨论】:
-
谁说推荐这样做?我看不出有任何意义。
-
提交表单时,浏览器会自动对输入内容进行 URL 编码。
-
谢谢 barmar,1) 所以我总是用 curl 做 urlencode 会更好吗? 2)从curl接收到发布的数据后不需要urldecode?span>
-
3) 我应该注意数据没有被 urlencoded 两次吗?例如,用户提交一个表单(数据由浏览器自动 urlencoded)然后在下一页数据将通过 curl 发布,所以我应该小心 urlencoding 不会发生两次?或者,如果我保留那个 urlencoding forach 以通过 curl 在下一页通过表单发送发布的数据仍然没有问题?
-
@user4271704 你不需要在接收脚本中使用
urldecode(),因为PHP在填写$_POST时会自动这样做。