2012-05-26 45 views
0

我遇到了cURL(使用PHP)的一些麻烦。 Bascially我想登录并执行一些网站上的功能。这通常会很好,但是网站每次访问必须在会话期间使用的登录页面时,都会为登录页面生成一个唯一的URL,并生成一个动态/唯一的POST URL。PHP cURL饼干和保持会话打开

因此 - 我正在导航到登录页面,然后抓取页面以检索唯一的POST url(我成功地这样做),然后制定POST请求并将其分发到唯一的URL。它不工作,但我认为这个问题是要么使用cookie或事实我不会保持会话打开...

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

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

$curl = curl_init();然后抓住了独特的帖子的网址,然后调用$ch = curl_init($loginPostUrl);初始化我的POST请求,这一切都完成

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

后终于不过,我不认为这是保持初始会议打开,同时提出发布请求(因此我检索到的POST网址是无效的..)

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

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

非常感谢:)

回答

3

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

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

,并与您的请求一起发送Cookie,请:

curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookieJar); 

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