在其他网站

时间:2016-07-25 17:14:32

标签: php jquery json session get

我试图将会话变量从一个网站变为另一个网站。有变量的网站是商店,另一个是常规网站。

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

我的计划是通过在空白页面上回显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>

该商店位于常规网站的文件夹中(商店位于子域)。我试图在商店的常规网站上导航,以便用户可以从常规网站轻松访问商店。我需要&#34;记录&#34;要知道我是否需要显示正常导航或登录用户的版本,我需要cartitemcount显示在&#34; Cart(0)&#34;在导航

任何人都可以帮我解决这个问题吗?如果最好的答案不是json对象,我可以提出建议。

3 个答案:

答案 0 :(得分:1)

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

要确定其他网站的登录状态,请实施适当的技术,例如Single Sign-on

答案 1 :(得分:0)

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

答案 2 :(得分:0)

预计会话将通过其原始URI进行识别。

试图通过客户端对其进行任何操作将导致特别臭名昭着的漏洞:Session_fixation

解决方案是在从客户端或服务器本身进行身份验证之后,通过对第二资源的安全API调用来使用跨源请求。单/社交登录等概念就是基于此。