2011-02-16 73 views
0

我有这样的问题:我有两个网站,例如SITEA和站点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,但是主人d上SITEA.COM)我有

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

    session_start(); 

    ... php code that generates a dynamic javascript code 

的问题是,在这最后一页我的PHP代码无法读取$ _SESSION [“例如”],尽管它们都在SITEA.COM

,如果他们是从不同的领域召回$ _SESSION不工作?

+0

会话仅适用于一个域。你想做什么?有人应该能够提供替代方案。 – Freddie 2011-02-16 09:14:33

+0

siteA是一个手机版网站,siteB是一个桌面版网站。 在siteB我想包括我的script.js.php,autoreirects(基于useragent)到siteA,如果您在siteA中使用移动设备 有链接“GO TO DESKTOP VERSION”,这应该是转到siteB.com并禁用(通过会话)autoredirect到siteA。 – 2011-02-16 09:41:02

回答

0

如果他们从不同的 域中调用$ _SESSION不起作用?

正确。

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 [“例如”],并重新创建会话,像这样:

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

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

相关问题