PHPSESSID
試してみてください。curl でCookieを渡すことができません。私は他の何人かが説明したものと同様の設定をしていますが、提案されたソリューションを機能させることができませんでした。
に get リクエストを送信するページがありますpageA.php
。 pageA.php
別のサーバーにあるからの情報が必要なpageB.php
ので、curl を使用しています。 pageB
ページに出入りするために必要なセッション状態を維持します。
Cookieではなく、他の Cookie を からpageA
に渡すことができます。pageB
PHPSESSID
次のように動作します (Cookie が に届きますpageB
)。
$options[CURLOPT_COOKIE] = "myPHPSESSID=" . $sessionId;
以下はしません:
$options[CURLOPT_COOKIE] = "PHPSESSID=" . $sessionId;
(私は $options 配列を構築し、それを に渡しますcurl_set_opt_array
)
curl_exec
実際、後者は、呼び出しが決して返されない (そしてpageB
到達しない)ため、私が識別できない何らかのエラーを引き起こします。
CURLOPT_COOKIE を使用する代わりにヘッダーを設定しようとしましたが、成功しませんでした:
$options[CURLOPT_HTTPHEADER][] = "Cookie: myPHPSESSID=" . $sessionId;
上記は問題なく動作しますが、
$options[CURLOPT_HTTPHEADER][] = "Cookie: PHPSESSID=" . $sessionId;
ではない。
PHP は明らかに、手動で PHPSESSID を設定することを望んでいません。関連性があるかどうかはわかりませんが、pageA で呼び出しを行うことはありませんstart_session()
(ただし、呼び出してみましたが、同じ結果が得られました)。
私は、(おそらく) セッション ID を別の名前の Cookie として渡すだけで、pageB 呼び出しset_session_id()
などを行うことができることに気付きました。しかし、回避策を作成するよりも、自分が間違っていることを修正したいので、自分がやっていることがうまくいかない理由を本当に知りたいです。役立つ場合は、ping を実行しているさまざまなヘッダーのダンプをいくつか提供できますが、この質問は今のところ十分に長いと思います。
ありがとう...