1

当用户到达我的站点时,会为他们启动一个会话。有一点是在我的网站主页上使用JavaScript生成了一个子窗口。

这个子窗口转到 Twitter 站点以验证用户身份,然后它被重定向回我站点上的脚本,该脚本将一些变量存储在 SESSION 中。

我发现子窗口中的 PHP 脚本不知道已经设置的会话和 session_id,因此它启动了一个新会话,这意味着父窗口(index.php)无法访问这些会话变量。

我很困惑。我能做些什么?

更新

这是我的代码,但问题不是我的代码,而是我遇到问题的实现。

索引.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

如果您使用相同的域,那么 PHP 应该知道会话,因为所有 cookie 都被发送回根据 HTTP 规范设置它们的域。

请注意,www.domain.com 与 domain.com 是不同的域。也可以为域上的路径设置 Cookie,因此请确保路​​径相同。也可以使用 * 为多个子域设置 Cookie。

如果您发布您拥有的相关 PHP 代码,它会有所帮助。

于 2009-07-13T14:28:41.410 回答