当前位置:Gxlcms > PHP教程 > php中http_build_query的一个问题_PHP

php中http_build_query的一个问题_PHP

时间:2021-07-01 10:21:17 帮助过:6人阅读

当我们使用CURL来post数据的时候,需要设置post的数据
curl_setopt($c, CURLOPT_POSTFIELDS, $post_data);

假如这里的$data是
代码如下:
  1. <br>$data = array( <br>'name'=>'scofield', <br>'time'=>'2012-2-3' <br>) <br> <br>接下来,需要先将$data变成字符串 <br>$post_data = http_build_query($data); <br>而采用 http_build_query 转换后再 <br>curl_setopt($c, CURLOPT_POSTFIELDS, $post_data); <br><br>看起来没有什么问题。但在实际操作中,$post_data 并没有被post过去。于是,自己写了个转换的方法后就OK了。 <br><u></u> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>function getStr($array,$Separator='&') { <br>if (empty($array)) <br>return; <br>if (!is_array($array)) { <br>return $array; <br>} <br>$returnStr = ''; <br>foreach ($array as $key => $val) { <br>$temp = ''; <br>if (is_array($val)) { <br>for ($i = 0; $i < count($val); $i++) { <br>$returnStr .= $key . '[' . $i . ']' . '=' . $val[$i] . $Separator; <br>} <br>} else { <br>$returnStr.= $key . '=' . $val . $Separator; <br>} <br>} <br>$returnStr = substr(trim($returnStr), 0, -1); <br>return $returnStr; <br>} <br> <br>感谢 黄斌-huangbin 童鞋的测试 http_build_query($data,"","&"); 即可,无需自己写方法解析了。<br><br>http_build_query 远程攻击者可以利用漏洞获得敏感内存信息。请大家谨慎使用 </li></ol></pre>

人气教程排行