0

脚本在没有实现 for 循环的情况下运行,但是当我放置一个 for 循环时它会失败。

工作脚本:

$dob=new DateTime('28-12-83');
$regno='1984';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://domain.com/login.php');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'op=&sub=3&txtregno='.$regno.'&txtrollno=&txtpass=&txtdob='. $dob->format('d-m-y'));
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec ($ch);
curl_setopt($ch, CURLOPT_URL, 'http://domain.com/results.php');
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
$fp = fopen('mm.htm', 'w');
curl_setopt ($ch, CURLOPT_FILE, $fp);
$store = curl_exec ($ch);
fclose($fp);
curl_close ($ch);

上面的脚本运行良好并生成一个带有输出的 mm.htm 文件。

for循环后脚本不正确

$dob=new DateTime('27-12-83');
$regno='1984';
for($i=1; $i<=3; $i++)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'domain.com/login.php');
    curl_setopt ($ch, CURLOPT_POST, 1);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, 'op=&sub=3&txtregno='.$regno.'&txtrollno=&txtpass=&txtdob='. $dob->format('d-m-y'));
    curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    $store = curl_exec ($ch);
    curl_setopt($ch, CURLOPT_URL, 'domain.com/results.php');
    curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
    $fp = fopen($regno."_".$i.'.htm', 'w');
    curl_setopt ($ch, CURLOPT_FILE, $fp);
    $store = curl_exec ($ch);
    fclose($fp);
    $dob->modify('+1 day');
    set_time_limit(0);
    curl_close ($ch);
}

上面的脚本生成 3 个 htm 文件,但没有任何输出。这意味着这个脚本在某个地方失败了,但我没有找到问题所在。

4

1 回答 1

0

如果您想将接收到的内容存储在您使用 CURLOPT_FILE 指定的文件中,那么您当然不应该也使用 CURLOPT_RETURNTRANSFER 来要求它返回吗?或者我应该问你为什么这样做?

于 2012-07-01T22:14:22.737 回答