2

首先我要做的是:我正在尝试访问登录页面以便我可以登录。该站点是 Https 并且需要设置 cookie,所以我使用 jquery 运行 PHP + Curl 来获取该页面我和存储饼干。好吧,我已经能够获取 cookie,但我不断收到未设置 Cookie 的弹出窗口。所以我看了很多,发现 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 Cache-Control: no-cache Content-Type: text/html;charset=UTF-8 Server: Microsoft-IIS/7.5 Set-Cookie :JSESSIONID=B4830242479D3DFD3235D17EE6A4DEB8;路径=/arsys; 安全组 Cookie:q=""; 到期时间=周四,1970 年 1 月 1 日 00:00:10 GMT;路径=/ 日期:2012 年 4 月 20 日星期五 17:57:17 GMT 内容长度: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 保存在正确的文件中,但仍会收到相同的消息。

我在谷歌上尝试了代码,它运行良好,它是阻止我的 javascript..

4

1 回答 1

0

使用PHP setcookie从 curl 获取后,您必须将 cookie 存储在浏览器 cookie 中(将其存储在单独的文件中),以便能够通过 JavaScript 使用它。

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

$.cookies.get()

$.cookies.filter()

$.cookies.set()

$.cookies.del()

$.cookies.test()

$.cookies.setOptions()
于 2012-04-20T20:48:03.193 回答