【发布时间】:2014-08-12 12:13:55
【问题描述】:
我目前正在尝试通过 curl 将 POST 数据发送到 URL。数据发送到的 URL 是表单所在的 URL。换句话说,“动作”的形式就是它本身。
问题是,在表单页面上,每次刷新都会设置一个随机隐藏输入值,我需要获取这些值,并将它们与我要发布的其他数据一起使用。这是我当前的代码:
<?php
function httpPost($url,$params) {
$postData = '';
$proxy = "127.0.0.1";
$port = "9150";
// Create name value pairs seperated by &
foreach($params as $k => $v) {
$postData .= $k . '='.urlencode($v).'&';
}
rtrim($postData, '&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, count($postData));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt ($ch, CURLOPT_PROXYTYPE, 7 );
curl_setopt ($ch, CURLOPT_PROXY, $proxy.':'.$port );
$output=curl_exec($ch);
curl_close($ch);
return $output;
}
$content = file_get_contents('https://secured.example.com/directory/create');
$params = array(
"name" => "Name",
"pass" => "password",
"email" => "email@email.com"
);
echo httpPost("https://secured.example.com/directory/create",$params);
?>
例如,https://secured.example.com/directory/create 有一个隐藏的输入字段,如下所示:
<input type="hidden" name="anon_token" value="ZHvR0DtwB-15Os0qwdVE3IN_ygSHHhllDAkOUwVPtZE" />
但是,该值是每次随机设置的(刷新)。
【问题讨论】:
-
您需要从 html 页面中提取该字段的值并提交。