2

我对 cURL 的请求有问题。

我想登录,它有效。我想保存 cookie 以保持连接可用,它可以工作。

$lien = 'https://thewebsite.com';
$postfields = array(
    'username' => 'test123',
    'password' => 'test123'
);

$path_cookie = 'connexion.txt';
if (!file_exists(realpath($path_cookie))) touch($path_cookie);

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $lien);
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($curl, CURLOPT_COOKIEJAR, realpath($path_cookie));

$return = curl_exec($curl);

echo($return);
curl_close($curl);

第二部分 :

$lien2 = 'https://thewebsite.com/myaccount';

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $lien2);
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($curl, CURLOPT_COOKIEFILE, realpath($path_cookie));

$return = curl_exec($curl); 

echo realpath($path_cookie);
curl_close($curl);

但是当我想提出其他请求时,它不起作用,输出是:

对象转移到了这里。

是登录页面(https://thewebsite.com)...

因此,当我尝试实现第二个 curl 命令时,连接不会保持可用并且服务器已被踢出。

任何人都可以帮助我吗?

也许第一个请求在第二个请求之前没有完成,我怎样才能在两个请求之间暂停?(睡眠不会工作)

4

1 回答 1

2

取自php 文档

CURLOPT_COOKIESESSION:

TRUE 将其标记为新的 cookie “会话”。它将强制 libcurl 忽略它即将加载的所有 cookie,这些 cookie 是来自上一个会话的“会话 cookie”。默认情况下,libcurl 始终存储和加载所有 cookie,无论它们是否是会话 cookie。会话 cookie 是没有到期日期的 cookie,它们仅在此“会话”中有效和存在。

所以换句话说,CURLOPT_COOKIESESSION从你的second part代码中删除,你的代码应该可以工作。

于 2013-06-18T20:09:33.347 回答