当用户到达我的网站时,会为他们启动会话。在我的网站主页上使用 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;
}
?>
答案 0 :(得分:2)
如果您使用相同的域,则PHP应该知道会话,因为所有cookie都会根据HTTP规范发送回设置它们的域。
请注意,www.domain.com与domain.com不同。 还可以为域上的路径设置Cookie,因此请确保路径相同。 也可以使用*为多个子域设置Cookie。
如果你发布了相关的PHP代码,那将会有所帮助。