同じであるがデータベースとデータが異なる2つのサイトがあります。 1つのサイトはwww.somesite.comで、もう1つはsub.somesite.comです。私がやっていることは、誰かがwww.somesite.comにログインし、ログインの詳細がwww.somesite.comと一致しない場合ですが、sub.somesite.comと一致してから、cURLを使用して情報を提出してログインすることです。私はカールが偉大な作業があります。リダイレクト時にcURLログインでセッション変数が失われる
foreach($_POST as $key=>$p) {
if ($post != "") {
$post .= "&";
}
$post .= $key."=".$p;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://sub.somesite.com");
curl_setopt($ch, CURLOPT_POST, count($_POST));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
$cArray = curl_getinfo($ch);
$newURL = $cArray[url];
echo str_replace('</head>','<base href="'.$newURL.'" /></head>',$result);
curl_close($ch);
は、これがないとされているのは、ポスト変数を収集し、他のサイトにそれらを提出し、パスが正しいようにベースURLを追加します。
私が持っている問題は、後に他のページです。そう、私はsomesite.comにいると言い、データを提出する。 sub.somesite.com/welcome.phpに行くとしても、アドレスバーsomesite.comに表示され、その情報はcookies.txtに保存されます。現在、sub.somesite.com/welcome.phpのリンク(sub.somesite.com/page2.php)をクリックすると、セッションはcookies.txtにあり、今はアクセスできないため、ログインページにリダイレクトされます。
どのようにセッションをすべてのページで引き続き使用できますか?
ありがとうございます。
意味がありますが、$ _COOKIEの代わりに$ _SESSIONが使用されています。私は両方のURLを変更しなければならないと思いますか?最初にクッキーを設定し、2番目にクッキーを探してセッションに変換しますか? – fanfavorite
さて、おそらくクライアントにセッションクッキー(通常はPHPSESSIDという名前)を渡して、リダイレクトすると、動作するようになります。 – Janhouse
しかし、カールを忘れる。 session_set_cookie_params - http://php.net/manual/en/function.session-set-cookie-params.php – Janhouse