https,Jquery,PHP,Curl和document.cookie

时间:2012-04-20 18:46:00

标签: php javascript jquery curl https

首先关闭我要做的事情: 我正在尝试访问登录页面以便我可以登录。该站点是Https并且需要设置cookie,因此我使用jquery运行PHP + Curl来获取该页面并存储cookie。好吧,我已经能够获得cookie,但我一直得到一个没有设置Cookies的弹出窗口。所以我看了很多,发现javascript初步检查是否启用了cookie:

function initLogin(){
// check if cookie is enabled so applications can run
if (document.cookie == "") {
alert("Cookies are disabled. Cannot access mid-tier with this setting.\nPlease configure your browser to accept cookies.");
return;
} 
....Other Code... 
}

我已经查看了这个论坛上的每个帖子,并尝试了不同代码的废话,但没有运气。所以问题是如何克服这一点?我的理解是:Jquery在代理/服务器上调用php脚本并调用curl来获取网页。然后Curl将保存cookie供以后使用,但是如何使用它们。我认为只要将它们设置在cookie文件中就足够了,但我想我错了。所以我厌倦了将它们设置为CURLOPT_COOKIE,但我不知道这是否正确。

以下是我正在运行的代码的副本:

function getpage(){
$fullurl = "https://url/arsys/shared/login.jsp?/arsys/home";

$ch = curl_init ();
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $fullurl);
$output = curl_exec ($ch);

preg_match_all('|Set-Cookie: (.*);|U', $output, $results);    
$newcookies = implode(';', $results[1]);
echo "<br>COOKIES:" . $newcookies;
curl_setopt ($ch, CURLOPT_COOKIE, $newcookies);
echo curl_error($ch) . " " . $output;
curl_close($ch);
}

以上代码的输出: COOKIES:JSESSIONID = B4830242479D3DFD3235D17EE6A4DEB8; q =“”HTTP / 1.1 200 OK缓存控制:无缓存内容类型:text / html; charset = UTF-8服务器:Microsoft-IIS / 7.5 Set-Cookie:JSESSIONID = B4830242479D3DFD3235D17EE6A4DEB8;路径= / ARSYS; Secure Set-Cookie:q =“”; Expires = Thu,01-Jan-1970 00:00:10 GMT; Path = / Date:Fri,20 Apr 2012 17:57:17 GMT Content-Length:35657

我也尝试过:

function getpage(){
$ckfile = "cookies/cookie.txt";
$fullurl = "https://url/arsys/shared/login.jsp?/arsys/home";

$ch = curl_init ();
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $fullurl);
$output = curl_exec ($ch);
curl_close($ch);
}

Cookie会保存在正确的文件中,但仍会收到相同的消息。

我在谷歌上尝试了这个代码,它的工作正常,它正在阻止我... ...

1 个答案:

答案 0 :(得分:0)

您必须使用PHP setcookie将Cookie从curl中获取后,将Cookie存储在浏览器Cookie中(在将其存储在单独的文件中之后)。

JavaScript方面:使用PHP设置cookie后,最好使用jQuery.cookies.js

$.cookies.get()

$.cookies.filter()

$.cookies.set()

$.cookies.del()

$.cookies.test()

$.cookies.setOptions()