1

ユーザーがサイトにアクセスすると、セッションが開始されます。サイトのホームページで、JavaScriptを使用して子ウィンドウが生成されるポイントがあります。

この子ウィンドウは Twitter サイトに移動してユーザーを認証し、SESSION にいくつかの変数を格納するサイトのスクリプトにリダイレクトされます。

子ウィンドウの PHP スクリプトは、既に設定されているセッションと session_id を認識していないため、親ウィンドウ (index.php) がこれらのセッション変数にアクセスできないことを意味する新しいセッションを開始することがわかりました。

私は困惑しています。私に何ができる?

アップデート

これが私のコードですが、問題は私のコードではなく、私が問題を抱えている実装です。

index.php

<?php session_start(); ?>

oauth.php //子ウィンドウ

<?php session_start();

$_SESSION['screen_name'] =  $twitterInfo->screen_name;

$_SESSION['profile_image_url'] = $twitterInfo->profile_image_url;

?>

子ウィンドウが閉じて、AJAX を使用して screen_name を確認すると、子ウィンドウ oauth.php が別のセッション(id) を使用しているため、一致が返されません。

<?php session_start();

    sleep(1);

    if(isset($_SESSION['screen_name'])){

        echo 'done';
        exit;

    }else{

        echo session_id().$_SESSION['screen_name'];
        exit;

    }
?>
4

1 に答える 1

2

同じドメインを使用する場合、すべての Cookie は HTTP 仕様に従って設定されたドメインに送り返されるため、PHP はセッションを認識する必要があります。

www.domain.com は domain.com とは異なるドメインであることに注意してください。ドメイン上のパスにも Cookie を設定できるため、パスが同じであることを確認してください。* を使用して複数のサブドメインに Cookie を設定することもできます。

関連する PHP コードを投稿すると、役に立ちます。

于 2009-07-13T14:28:41.410 に答える