2014-02-10 36 views
2

我有一个页面的结构,它具有页面内不同域的iframe。这两个域名仅由我拥有。我面临的问题是我无法在iframe中访问父框架的会话。我也尝试了数据库会话,但我没有在iframe中获得会话变量。在Iframe中访问Cdbhttpsession

<body> 
<?php Yii::app()->session['myvar']="iframeVar";?> 
<iframe scr="https://xyz.com.au"></iframe> 
</body> 

和xyz.com.au看起来像

<body> 
<?php echo Yii::app()->session['myvar'];?> 
</body> 

请指引我。

谢谢。

+0

您是否在第二个域(在iframe中打开的域)上使用单独的yii安装? – deacs

+0

是的......分离服务器与不同域名的分离关系 – Dirgh

+0

iframes需要注意的一点是,如果您的网站位于iframe内,IE和Safari将不允许您发送cookie,因此您需要在查询中使用会话ID串。 –

回答

0

以下来自this question

在session_start()创建一个会话或恢复基于经由GET或POST请求,或通过cookie传递传递的会话标识符的当前一个。

你可以尝试使用单独的Yii安装页面上下面的代码:

$session=new CHttpSession; 
$session->open(); 

open()方法调用PHP的方法session_start()应该恢复你在父框架有会话。尝试访问像这样的变量:

echo $session['myvar']; 

希望有所帮助。如果不是,请尝试检查this question

+0

感谢您的回答,但我已经试过这个,但它不工作..答案我可以找到这个说安全的同一起源政策不允许交叉会话访问...我期待有替代yii具体的方式。 – Dirgh

+0

当你在两个框架中回复Yii :: app() - > session-> sessionID'时,你会得到什么? – deacs

+0

不同会话ID ...可能是它为该帧创建新会话... – Dirgh