【问题标题】:PHP cURL Session not found / Session may have expired未找到 PHP cURL 会话/会话可能已过期
【发布时间】:2013-11-12 21:42:09
【问题描述】:

所以我使用 cURL 从第 1 页获取数据,从中获取信息并将其存储在数组中。下一步是加载下一页,我通过创建一个具有相同 cookiejar 和 cookiefile 的新 cURL 来完成此操作。我正确地看到了第 1 页,但第 2 页显示:找不到会话。会话可能已过期。通过查看标题信息,我看到在第 1 页中它设置了 cookie WCOOKIE=rd244o00000000000000000000ffff912c10f5o80。
在第 2 页的标题中,它设置了 cookie WCOOKIE=rd244o00000000000000000000ffff912c10f6o80。
所以这就是为什么它认为会话已过期,它不加载 cookie 但页面试图重写它。所以我的问题是:我必须怎么做才能让第 2 页加载第 1 页设置的 cookie,而不是尝试设置新的 cookie?

附加信息: 两个页面的加载都发生在一个文件(1.php)中,因为我需要将两个数据都存储在 1 个数组中,并且您需要第 1 页的 cookie 才能请求第 2 页。

两个页面都设置为使用标题:

$headers[] = "Accept: */*";  
$headers[] = "Connection: Keep-Alive";  
$headers[] = "Content-type: application/x-www-form-urlencoded;charset=UTF-8";  

加载页面1:

$cSession = curl_init(); 
$tmpfname = dirname(__FILE__).'/cookie.txt';
curl_setopt($cSession, CURLOPT_COOKIEJAR, $tmpfname);
curl_setopt($cSession, CURLOPT_COOKIEFILE, $tmpfname);
curl_setopt($cSession, CURLOPT_HTTPHEADER,  $headers);
curl_setopt ($cSession, CURLOPT_COOKIESESSION, TRUE);

加载页面2:

$ch = curl_init ();
$tmpfname = dirname(__FILE__).'/cookie.txt';
curl_setopt($ch, CURLOPT_COOKIEJAR, $tmpfname);
curl_setopt($ch, CURLOPT_COOKIEFILE, $tmpfname);
curl_setopt($ch, CURLOPT_HTTPHEADER,  $headers);
curl_setopt ($ch, CURLOPT_COOKIESESSION, TRUE);  

这不是所有设置,但我猜我必须更改这些行中的某些内容,如果需要更多信息,请告诉我,我会发布它们。
非常感谢帮助:)

【问题讨论】:

    标签: php session cookies curl


    【解决方案1】:

    好的,感谢这篇文章how to get the cookies from a php curl into a variable,我终于修复了它。我把它贴在这里给其他有同样问题的人。
    首先我在请求 1 中打开了 CURLOPT_HEADER。然后我使用这段代码来获取 cookie:

    preg_match('/^Set-Cookie:\s*([^;]*)/mi', $result, $m);
    parse_str($m[1], $cookies);
    $cookie = $cookies['NAMEOFCOOKIEUNEEDHERE']; 
    

    那么我可以使用这个在请求 2 中传递这个 cookie:

    curl_setopt($ch, CURLOPT_COOKIE, 'NAMEOFCOOKIEUNEEDHERE='.$cookie);
    

    希望这可以帮助任何人

    【讨论】:

      猜你喜欢
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      • 2016-08-04
      • 1970-01-01
      • 2013-12-03
      • 2011-04-07
      • 1970-01-01
      相关资源
      最近更新 更多