PHP cURL cookie 并保持会话打开


PHP cURL cookies & keeping session open

我在使用cURL(使用PHP)时遇到了一些问题。基本上我想登录并在网站上执行一些功能。这通常没问题,但是每次访问登录页面时,网站都会为登录页面生成一个唯一的 URL,并在该会话期间使用一个动态/唯一的 POST URL。

因此 - 我目前正在导航到登录页面,然后抓取页面以检索唯一的 POST URL(我成功地做到了),然后制定一个 POST 请求并将其调度到唯一的 URL。虽然它不起作用,但我认为问题要么与 cookie 有关,要么与我没有保持会话打开的事实有关......

首先,我不知道为什么没有保存cookie(但是它们仅适用于该浏览器会话,也许这可能是原因?我创建了一个测试页面,它存储了一个cookie并且可以工作。所以也许这不是我的问题。

其次,我不认为我让会议保持开放。我打电话给:

$curl = curl_init();然后抓取唯一的 POST 网址,然后调用$ch = curl_init($loginPostUrl);初始化我的 POST 请求,最后在全部完成后

curl_close($ch);
curl_close($curl);

但是,我认为这不会在发出 post 请求时保持初始会话打开(因此我检索的 POST 网址无效......

有人可以解释一下如何在同一会话中执行这些请求吗?

对不起 - 我的解释很差,如果人们不理解,我会尝试澄清。

非常感谢:)

如果您使用 cURL 访问该页面,则 Cookie 不会存储在您的浏览器中。这是正常的:脚本正在服务器端执行请求,这与浏览器处理cookie的方式无关。

为了实现您想要的目标,您可以使用 cURL 的功能将 cookie 保存在一个文件中,稍后可以随您的请求一起发送。要创建或使用此文件,请执行:curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookieJar);(其中$cookieJar是要在其中保存 cookie 的文件的路径)。

要随您的请求一起发送 cookie,请执行以下操作:

curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookieJar);

我希望这回答了你的问题。