(私は、ドメインがこの回答に入れ替え得ているかもしれないが、理論は同じでなければなりません。)
あなたの最善の策は、customazon.comにgamekeg.comログインページからcross-domain AJAX requestを行うことであろう(クロスドメインリクエストを許可するには、いくつかの特別なヘッダーを送信する必要があります - 詳細はそのリンクを参照してください)。通常の状況下では、両方のサイトを管理しない限り(これは思われる)、これは不可能です。その後
// Send appropriate cross-domain headers here.
// In addition, you must configure your crossdomain.xml in your root.
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: http://source.com");
header("Access-Control-Allow-Headers: Content-Type, *");
if (isset($_POST["username"]) && isset($_POST["password_hash"])) {
setcookie("username", $_POST["username"], time() + 24 * 60 * 60);
setcookie("password", $_POST["password_hash"], time() + 24 * 60 * 60);
}
、:
// I don't expect you to use jQuery, but I don't recall the entire
// AJAX process off of the top of my head. You may have to set
// xhr.withCredentials = true or something.
$.ajax(
"http://customazon.com/ajax_login.php",
{
"username": <?php echo $username; ?>,
"password_hash": <?php echo $password_hash; ?>
}
);
ajax_login.php
のようなものかもしれません:ユーザが正常にログインした後、あなたがこのような呼び出しを行うことができますgamekeg.comのログインページで
、フレームコンテナ上で頻繁にチェックを行い、ユーザがログインしているかどうかを確認することができます(:QuirksMode)。
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function checkAjaxLogin() {
if (readCookie("username") !== null && readCookie("password")) {
// You're logged in now; refreshing the page should
// do the rest, assuming the cookies are named correctly.
window.location.refresh();
}
}
ただし、Flashを使用できる場合は、Flash要求がドメイン間ポリシーを気にしないため、処理が迅速化される可能性があります。しかし、私は例を提供するためのFlashのスキルはありませんし、とにかく多分、おそらくあります。
checkAjaxLoginを除いて、あなたが提案したものを適用しました。なぜなら、それが何をしているのか、なぜ必要なのかがはっきりしていないからです。 Ajaxは正しくポスティングされているようです。 ajax_loginがその役割を果たしているようです。 crossdomain.xmlはそこにあります。しかし、私はまだクッキーが設定されて表示されません。 –
今ログインしようとすると、画面上部にvar_dump($ _ COOKIE)(gamekeg.comから)が表示されます。ログインすると、customazonで動作するajaxからの応答のアラート()が表示されます。データが受信され、setcookieが呼び出されたことを示し、$ _COOKIE(customazon.comから)も出力します。両方のcookie var_dumpsは空の配列を表示します。私は今何が逃していますか? –
私は実際にフレームを見ていません。彼らはどこにいるのですか? –