从不同域调用的不同页面之间的PHP $ _SESSION(但位于同一域中)

时间:2011-02-16 09:08:01

标签: php session dns

我有这个问题:我有两个网站,例如SITEA和SITE B

来自SITEA.COM,用户进入此页面(SITEA.COM/gopage) 具有以下代码:

session_start();
$_SESSION['example'] = "example";       
header("Location: SITEB.COM");

在SITEB.com,我有

<script type="text/javascript" src="SITEA.COM/include/script.js.php"></script>

在script.js.php中(由SITEB.COM调用,但托管在SITEA.COM上)我有

<?php 
   header("Content-Type: text/javascript");

     session_start();

     ... php code that generates a dynamic javascript code

问题是我最后一页的php代码无法读取$ _SESSION ['example'],尽管它们都在SITEA.COM上

如果从不同的域调用它们,$ _SESSION不起作用吗?

2 个答案:

答案 0 :(得分:1)

if they are recalled from different domains the $_SESSION doesnt work?

事实上。这是设计的。会话绑定到一个Web域。否则,市场营销人员和类似的人将能够在您旅行期间跟踪您的会话。你只需要放弃你现在正在采取的路线:它将无法工作。

常用的替代方法是在将用户重定向到其他网站时构建查询字符串。在您的代码中,您可以将其更改为:

session_start();
$_SESSION['example'] = "example";       
header("Location: SITEB.COM/?example=" . $_SESSION['example']);

然后,在另一个网站上,您可以检查$ _GET ['example']并重新创建会话,如下所示:

session_start();
$_SESSION['example'] = $_GET['example']

这不是一个完全透明的解决方案,但它非常接近。

答案 1 :(得分:0)

  

如果从不同的地方召回他们   域名$ _SESSION不起作用?

正确。