为什么我不能通过php的curl提交表单?

问题描述:

$ua_s = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14'; 
$c = curl_init($the_url); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($c, CURLOPT_USERAGENT, $ua_s); 
curl_setopt($c, CURLOPT_POST, true); 
curl_setopt($c, CURLOPT_POSTFIELDS, $post_string); 
$cont = curl_exec($c); 
curl_close($c); 

发送所有必填字段,但未能正确提交。写HTML表单测试 - 一切都很好,如果在浏览器这样做:为什么我不能通过php的curl提交表单?

目标脚本可能需要一定的cookie存在或引用是同一个域的脚本中。

你的$ post_string是怎么样的?它是否被urlencoded?

+0

使用数组而不是urlencoded字符串会更好。然后curl负责将其编码为一个字符串。 – ThiefMaster 2010-05-10 09:08:59

+0

这取决于。如果使用字符串,则内容将作为'application/x-www-form-urlencoded'发送,而使用数组创建'multipart/form-data'内容。在大多数情况下,这并不重要,但有些服务器无法正确处理多部分/表单数据。此外,x-www-form-urlencoded是POST的默认值(除非您正在传输文件)。 – 2010-05-10 09:24:26