如何发布到表单并填充选择倍数?

mik*_*ike 1 php select curl

我在这里做了一些有点奇怪的事情,我从我的本地数据库中查询数据并使用cURL将其定位到Salesforce表单.数据正确发布到Salesforce.但是,选择倍数未获得选择的正确值.请参阅我的代码中的$ sd ["location"]:

    //init curl
    $ch = curl_init();

    //setup the params
    $url = 'https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8';
    $oid = "HIDDEN";

    //setup the superdelegate array
    $sd = array();
    $sd["oid"] = $oid;
    $sd["retURL"] = "";  
    $sd["first_name"] = "1144asdfsadf4"; 
    $sd["last_name"] = "SDFSD1111";
    $sd["state"] = "IL";
    $sd["location"] = '"Chicago","New York","California"'; //this is the value that submits to the select multiple

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($sd));

    //post to Salesforce and then close the connection 
    curl_exec($ch); 
    curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

已在Salesforce中设置了选择倍数,其中包含30个不同的位置.我正试图通过应该被选中的城市(芝加哥,纽约,加利福尼亚州).你可以帮我修改我的代码以使其正常工作吗?

Kev*_*eno 7

你试图实现/复制的是非标准(或者如果你愿意的话,是"实验性的")application/x-www-form-urlencoded格式.mime类型中的"x-"表示它尚未正式标准化.

最常见的应用程序/ x-WWW-form-urlencoded格式我遇到的是在HTML 4(也可能是HTML 5)规范中指定位置.简化时,表示每个成功的控件都按其显示的顺序与其名称和当前值配对,并用&符号"&"分隔.这将转换为包含以下内容的HTTP GET或POST方法:

name=test&desc=some%20description&option=1&option=2&option=3
Run Code Online (Sandbox Code Playgroud)

您还应该在表单名称和值上使用PHP的urlencode函数,然后在HTTP请求的适当位置传递它,以符合RFC1738.

作为旁注,PHP虽然可能并不孤单,但它在处理单个post var上的多个值时却是一个奇怪的例子.它遵循HTML建议的规范,但如果其名称包含PHP数组追加运算符,则将其扩展为仅将var视为多个,例如formname[].如果您尝试在PHP脚本上遵循HTML建议(请参阅下文),则在通过$_POST$_GET超级全局访问时,它将覆盖名称上的先前值.