我试图将会话变量从一个网站变为另一个网站。有变量的网站是商店,另一个是常规网站。
我想在常规网站上了解用户是否已登录(仅当我不需要知道帐户时)以及用户在购物车中有多少商品。
我的计划是通过在空白页面上回显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对象,我可以提出建议。
答案 0 :(得分:1)
假设两个站点在物理上是分开的,根据定义是不可能的。如果您可以通过这种方式请求会话数据,那将是一个严重的安全风险。
要确定其他网站的登录状态,请实施适当的技术,例如Single Sign-on。
答案 1 :(得分:0)
使用数据库或其他共享后端数据存储。如果您通过前端发送会话数据,则可以由用户操作(例如,当用户未真正登录时设置"logged":1
,或"cart":9
检查其他人的购物车)。< / p>
答案 2 :(得分:0)
预计会话将通过其原始URI进行识别。
试图通过客户端对其进行任何操作将导致特别臭名昭着的漏洞:Session_fixation
解决方案是在从客户端或服务器本身进行身份验证之后,通过对第二资源的安全API调用来使用跨源请求。单/社交登录等概念就是基于此。