2016-07-25 44 views
0

我试图从一个网站获取会话变量到另一个网站。具有变量的网站是商店,另一个网站是常规网站。在另一个网站使用sessiondata

我想在常规网站上知道用户是否已登录(仅当我不需要知道用户帐户时)以及用户购物车中有多少物品时。

我的计划是通过在空白页面上回显json对象并在其他网站上使用jQuery.get来获得变量。在商店的页面(transferdata.php)不会显示正确的对象,这是

{"logged":1,"cart":9}
然而,检索该数据的页面(访问getdata.php)得到

{"logged":0,"cart":0}

代码transferdata.php(在shopwebsite文件)

# Check login status 
if ($ca->isLoggedIn()) { 
    $transferdata['logged'] = 1; 
} else { 
    $transferdata['logged'] = 0; 
} 

# Get amount of items in a cart 
$transferdata['cart'] = count ($_SESSION['cart']['products']) + count ($_SESSION['cart']['addons']) + count ($_SESSION['cart']['domains']); 

# Display transferdata 
echo json_encode($transferdata); 

代码访问getdata.php(在正规网站上的文件)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
<script> 
$.get("https://**.*******.nl/transferdata.php", function(data) { 
    $(".result").html(data); 
    alert("Load was performed."); 
}); 
</script> 

<div class="result"></div> 

这家商店是位于常规网站的文件夹中(商店位于子域)。我试图在商店的常规网站上进行导航,以便用户可以从常规网站轻松访问商店。我需要“登录”才能知道是否需要显示正常的导航或登录用户的版本,并且我需要cartitemcount在导航中显示在“购物车(0)”中

任何人都可以帮助我解决这个?如果最佳答案不是JSON对象,我愿意提供建议。

+0

让我们看看一些代码。 – buster

+0

已添加代码。对不起,没有在原来的文章中包含它。 –

回答

0

使用数据库或其他共享后端数据存储。如果您通过前端发送会话数据,则可以由用户操作(例如,当用户未真正登录时设置"logged":1,或者"cart":9检查其他人的购物车)。

1

假设这两个站点在物理上是分开的,按照定义是不可能的。如果您可以通过这种方式请求会话数据,那将是一个严重的安全风险。

要确定不同站点的登录状态,请执行适当的技术,如Single Sign-on

+0

本店位于常规网站的一个文件夹中(店铺位于子域)。我试图在商店的常规网站上进行导航,以便用户可以从常规网站轻松访问商店。我需要“登录”才能知道是否需要显示正常导航或登录用户的版本,并且我需要cartitemcount在导航中的“购物车(0)”中显示。 –

+0

只要2个应用程序不共享会话标识和存储,会话就会分开。无论如何,一次只有一个应用程序可以访问会话(因为会话在访问期间将被锁定),所以它需要协作编程。 我建议使用购物车的公共数据库和用于登录的SSO技术 –

0

会话期望通过其原始URI进行标识。

试图做出同样的任何操作通过客户端将导致脆弱性具体臭名昭著:Session_fixation

一种解决方案是通过安全API调用使用跨来源请求发送到第二资源认证之后任一从客户端或服务器本身。诸如单一/社交登录之类的概念都基于此。