1

我试图从外部页面获取所有 cookie 并将它们设置在我的页面中,我有这个脚本:

 $url = "http://www.booking.com/hotel/cz/red-blue-design-prague.html?checkin=2012-07-07&interval=1&selected_currency=USD";
 $ckfile = tempnam ("tmp", "CURLCOOKIE");

 $options = array(
    CURLOPT_RETURNTRANSFER => TRUE,     // return web page
    CURLOPT_HEADER         => TRUE,     // do not return headers
    CURLOPT_HEADER         => TRUE,     // do not return headers
    CURLOPT_FOLLOWLOCATION => TRUE,     // follow redirects
    CURLOPT_USERAGENT      => "googlebot", // who am i
    CURLOPT_AUTOREFERER    => TRUE,     // set referer on redirect
    CURLOPT_CONNECTTIMEOUT => 120,        // timeout on connect
    CURLOPT_TIMEOUT        => 120,        // timeout on response
    CURLOPT_MAXREDIRS      => 3,        // stop after 10 redirects
    CURLOPT_ENCODING       => 'UTF-8',
    CURLOPT_COOKIEJAR      => $ckfile,
    CURLOPT_COOKIEFILE     => $ckfile
  );
  $ch = curl_init();
  curl_setopt_array( $ch, $options );
  curl_setopt($ch, CURLOPT_URL, $url);
  $a = curl_exec($ch);

但是当我检查时它没有得到cookie $ckfile,有人可以帮忙吗,谢谢

4

1 回答 1

2

我找到了解决方案,谢谢:

function myCurl($url)
{
    $cookie_file_path = tempnam ("tmp", "CURLCOOKIE");

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_AUTOREFERER, 0);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60);
    curl_setopt($curl, CURLOPT_TIMEOUT, 60);
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file_path);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file_path);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_COOKIESESSION, TRUE);
    curl_setopt($curl, CURLOPT_COOKIE, session_name() . '=' . session_id());
    curl_setopt($curl, CURLOPT_URL, $url);

    $a = curl_exec ($curl);

    return $a;
}
于 2012-05-09T15:06:48.273 回答