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を呼び出してWebページを取得します。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=""; 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 は正しいファイルに保存されますが、同じメッセージが表示されます。

私はグーグルでコードを試してみましたが、私を止めているJavaScriptがうまく動作します..

4

1 に答える 1

0

JavaScript経由で利用できるようにするには、PHPのsetcookieを使ってcurlから取得した後、ブラウザのcookieに(別ファイルに格納した上で)格納する必要があります。

JavaScript 側: PHP を使用して Cookie を設定した後は、jQuery.cookies.jsを使用することをお勧めします

$.cookies.get()

$.cookies.filter()

$.cookies.set()

$.cookies.del()

$.cookies.test()

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