在子窗口中维护相同的会话

时间:2009-07-13 14:20:40

标签: php session sessionid

当用户到达我的网站时,会为他们启动会话。在我的网站主页上使用 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;

    }
?>

1 个答案:

答案 0 :(得分:2)

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

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

如果你发布了相关的PHP代码,那将会有所帮助。