【发布时间】:2013-09-23 15:33:50
【问题描述】:
我有一个包含多个 iframe 的网站。第一个是登录框架,一旦成功登录,它就会启动一个 php 会话。代码如下:
<?php
header('P3P: CP="CAO PSA OUR"');
session_start();
$_SESSION["email"] = $user_info[email];
$_SESSION["password"] = $user_info[password];
echo session_id();
?>
会话通过登录 iframe 启动后,我希望会话仍然处于活动状态,并且变量在不同的 iframe 中可用(它们具有相同的父页面)。不幸的是,第二个 iframe 在加载后会创建一个全新的会话并且变量会丢失。帮忙?
如何保持会话活动并在 iframe 之间传递会话变量?
第二个 iframe 中的代码如下所示:
<?php
header('P3P: CP="CAO PSA OUR"');
session_start();
echo session_id();
?>
这两个框架有不同的会话 ID。这就是我知道会话没有成功传递的方式。
谢谢!
【问题讨论】:
-
iFrame 是否在同一个(子)域上加载页面?
-
iFrame 何时加载?是同时吗?我的猜测是加载 iFrame 时未设置会话 cookie,因此它会创建一个新会话。如果刷新页面/iFrame 会发生什么?
-
iframe 在同一个域上加载。登录 iframe 必须在第二个 iframe 可能加载之前完成登录处理(并因此启动会话)。同样,我要求每个 iframe 回显会话 ID,它们会产生不同的值。我试过刷新,没有运气:/
-
您是否考虑过一种无需离开初始页面即可登录的替代方法——比如 AJAX?在 iframe 中管理这听起来像是一种痛苦的方式。
标签: php variables session iframe