卷曲卡在同一页面上

时间:2016-02-15 20:30:31

标签: php curl

我正在尝试登录页面,然后转到另一个页面,提交表单,然后我在同一个链接上获得另一个表单,提交,然后在同一个链接上获取另一个表单,然后提交这一点。

然而,从我看到的情况来看,我登录很好......但之后它一直向我显示相同的页面(登录后的那个页面)。

 $username = 'xxxxxxx';
    $password = 'yyyyyyy';
    $useragent = $_SERVER["HTTP_USER_AGENT"];

    $fields = array(
        'username='. urlencode($username),
        'password=' . urlencode($password),
    );
    $postdata = implode('&', $fields);

    $ch = curl_init();

    //Main Login
    curl_setopt ($ch, CURLOPT_URL,"https://xxxxxxxxxxxx.com/index.php");
    curl_setopt ($ch, CURLOPT_HEADER, true);
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
    curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
    curl_setopt ($ch, CURLOPT_REFERER, "https://xxxxxxxxxxx.com/index.php");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt ($ch, CURLOPT_POST, 1);
    $result = curl_exec($ch);
    $info = curl_getinfo($ch);
    echo $result;
    echo "<pre>";
    print_r ($info);
    echo "</pre>";
    print curl_error($ch);

$contractid = "12345";
$fields = array(
    'contract_id='. urlencode($contractid),
    'submit='. urlencode("Next"),
);
$postdata2 = implode('&', $fields);

curl_setopt ($ch, CURLOPT_URL,"https://xxxxxxxxxxxx.com/index.php?page=Recovery");
curl_setopt ($ch, CURLOPT_HEADER, true);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt ($ch, CURLOPT_REFERER, "https://xxxxxxxxxxxxx.com/index.php?page=Recovery");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata2);
curl_setopt ($ch, CURLOPT_POST, 1);

$result_2 = curl_exec($ch);
$info = curl_getinfo($ch);
echo $result;
echo "<pre>";
print_r ($info);
echo "</pre>";
print curl_error($ch);

以及每个步骤两次,同样的方式,并以curl_close($ch);结束。

但是,正如我所说,它仍然只显示主页。

1 个答案:

答案 0 :(得分:0)

第一次卷曲请求后关闭curl并再次初始化。否则curl不会向cookie文件写入任何内容,并且在下次调用时不会发送cookie!

  

CURLOPT_COOKIEJAR

     

句柄所在的用于保存所有内部cookie的文件的名称   关闭,例如在致电curl_close之后。

// after end of first curl call
curl_close($ch);

// before second curl call
$ch = curl_init();