无法传递数组以在PHP中发布

时间:2016-02-17 18:17:19

标签: php arrays http post curl

这是我的阵列:

Array
(
    [lead_id] => 107
    [source_type] => 1
    [source_id] => 1
    [lead_content] => {"1":"11","2":"11"}
    [user_ip] => ::1
    [user_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36
    [user_referer] => 
    [old_user_lead_id] => 5
    [user_id] => 1
    [lead_status_id] => 1
    [lead_management_comment] => 
    [time] => 2016-02-17 20:11:24
    [utm_source] => 
    [utm_medium] => 
    [utm_term] => 
    [utm_content] => 
    [utm_campaign] => 
    [lead_status_name] => Received
)

我尝试使用此代码发送给他:

 $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    if ($post) {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_REFERER, get_site_url());
    $result = curl_exec($ch);
    curl_close($ch);

在另一方面,我有代码只打印$ _POST。但是这个代码不能用这个数组打印任何东西(和其他数组一样可以正常工作)。 数组为什么不通过?可能是因为我的阵列中有任何非法字符?

谢谢:)

2 个答案:

答案 0 :(得分:0)

问题解决了。这不是阵列。 问题出在接收数据的文件中。 他有防止显示太多角色的保护。这对我来说非常愚蠢。

感谢大家的帮助:)。

答案 1 :(得分:-2)

你不能直接将数组传递给CURLOPT_POSTFIELDS,你必须

要正确发送多维数组,您必须先使用http_build_query()

(...)
if ($post) {
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query( $post ));
}
(...)

编辑:

我的第一个答案完全不正确,但我保留了修改,因为多维数组正确