2011-06-07 64 views
0

我坚持尝试处理一个随机的名称和值的形式HTML通过卷曲发布数据。
在这里我的代码。php,curl,curl_exec()

function grapvalue($html){ 

//parse content to grap name and value random 

} 

$opt = array(
     CURLOPT_AUTOREFERER => true, 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_COOKIEFILE => 'cookie.txt', 
     CURLOPT_COOKIEJAR => 'cookie.txt' 
     CURLOPT_POST => true, 
     CURLOPT_POSTFIELDS => grapvalue($html) 
     ) 

$init = curl_init("site.com") 
curl_setopt_array($init,$opt) 
$html = curl_exec($init) 

我必须要执行的函数curl_exec()两次,第一次我必须执行curl_exec函数来检索HTML得到的名称和随机值,再发送数据。 我该如何解决这个问题?

+1

所以你需要提出一个请求来找出表单域是什么,然后再提交一个实际提交它们的请求?为什么你不能硬编码参数? – lonesomeday 2011-06-07 16:46:14

回答

2

以下是完整的解决方案:

//First, we make a request to grab the variables 
function grapvalue(){ 

$opt = array(
    CURLOPT_AUTOREFERER => true, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_COOKIEFILE => 'cookie.txt', 
    CURLOPT_COOKIEJAR => 'cookie.txt' 
    ); 

$init = curl_init("site.com"); 
curl_setopt_array($init,$opt); 
$html = curl_exec($init); 

//parse content to grap name and value random 

} 

//Than, just call grapvalue() without any parameters 
$opt = array(
    CURLOPT_AUTOREFERER => true, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_COOKIEFILE => 'cookie.txt', 
    CURLOPT_COOKIEJAR => 'cookie.txt' 
    CURLOPT_POST => true, 
    CURLOPT_POSTFIELDS => grapvalue() 
    ); 

$init = curl_init("site.com"); 
curl_setopt_array($init,$opt); 
$html = curl_exec($init); 

提示:你可能更喜欢使用CURLOPT_COOKIE而不是CURLOPT_COOKIEFILECURLOPT_COOKIEJAR

+0

@develroot,我仍然无法发送发布数据,我不知道是什么原因造成的? 我可以问你的电子邮件地址吗?我会发送我创建的所有代码。 – mac786751 2011-06-12 23:48:35

+0

终于我的脚本已经成功运行,没有错误!非常感谢大家。 。 – mac786751 2011-06-16 19:32:31

+0

如果有帮助,您可以接受此答案。 – technology 2011-06-16 19:33:51

1

为什么不创建function cURL(),调用该函数,获取$html并再次调用post值?

+0

这里的示例代码我想得到和解析后得到价值随机与一个单一的请求。 ' ' 每次的名称和值是随机的。 对不起,我不会说英语好花花公子 – mac786751 2011-06-07 18:01:08

+0

@ mac786751你不能用一个请求来做。顺便说一下,cURL函数可以用于获取/发布请求: http://pastebin.com/7Vnw1vjJ – fvox 2011-06-07 19:26:58