我的系统需要多个PHP会话吗?
背景信息:我的系统需要多个PHP会话吗?,php,session,session-variables,session-cookies,Php,Session,Session Variables,Session Cookies,背景信息: $_SESSION["quotesarray"] = ""; $quotesArray = array(); $quotesArray["product1"] = array(); $quotesArray['product1']['gross'] = 49.99; $quotesArray['product1']['sell'] = 45.99; $quotesArray["product2"] = array(); $quotesArray['product2']['
$_SESSION["quotesarray"] = "";
$quotesArray = array();
$quotesArray["product1"] = array();
$quotesArray['product1']['gross'] = 49.99;
$quotesArray['product1']['sell'] = 45.99;
$quotesArray["product2"] = array();
$quotesArray['product2']['gross'] = 20.99;
$quotesArray['product2']['sell'] = 25.99;
$_SESSION["quotesarray"] = $quotesArray;
$quotesArray["product2"] = "";
$quotesSessionArray = requestSession("quotesarray");
echo $quotesSessionArray['product1']['gross'];
我们的采购流程分为4个阶段-价格、客户详细信息、付款、订单确认
我们有多个产品,可以通过相同的购买流程,使用相同的URL购买
我们使用PHP会话来存储大量报价数据,并一直存储到订单完成
许多PHP会话变量在我们的所有产品中共享,如“grossprice”“product”等
问题:
$_SESSION["quotesarray"] = "";
$quotesArray = array();
$quotesArray["product1"] = array();
$quotesArray['product1']['gross'] = 49.99;
$quotesArray['product1']['sell'] = 45.99;
$quotesArray["product2"] = array();
$quotesArray['product2']['gross'] = 20.99;
$quotesArray['product2']['sell'] = 25.99;
$_SESSION["quotesarray"] = $quotesArray;
$quotesArray["product2"] = "";
$quotesSessionArray = requestSession("quotesarray");
echo $quotesSessionArray['product1']['gross'];
如果一个客户购买了一半的东西,然后开始在另一个选项卡中浏览网站,然后获得另一个产品的报价-当前的系统设置意味着共享php会话变量可以开始相互写入,这会导致第一次购买失败。例如,“grossprice”可能会在最后一个阶段发生变化,因为用户得到了完全不同的报价
我自学成才,所以这对我来说是一个学习曲线——我意识到在建立的系统中有一个大问题
在每个购买阶段页面的顶部,我有以下代码:
session_name("buying_system");
session_start();
我是否认为应该根据购买的产品设置会话名称
比如说:
session_name($_GET['product'] . "_buying_system");
然后用户可以在两个选项卡中进行购买过程,针对不同的产品,并且会话不会相互冲突或覆盖
潜在解决方案1:
$_SESSION["quotesarray"] = "";
$quotesArray = array();
$quotesArray["product1"] = array();
$quotesArray['product1']['gross'] = 49.99;
$quotesArray['product1']['sell'] = 45.99;
$quotesArray["product2"] = array();
$quotesArray['product2']['gross'] = 20.99;
$quotesArray['product2']['sell'] = 25.99;
$_SESSION["quotesarray"] = $quotesArray;
$quotesArray["product2"] = "";
$quotesSessionArray = requestSession("quotesarray");
echo $quotesSessionArray['product1']['gross'];
通常所有选项卡只有一个会话。会话密钥保存到cookie中,如果他对购物车做了一些操作,那么它会在所有选项卡中更改。通常所有选项卡只有一个会话。会话密钥保存到cookie中,如果他对购物车做了一些操作,那么它会在所有选项卡中更改。通常所有选项卡只有一个会话。会话密钥保存到cookie中,如果他对购物车做了一些操作,那么它会在所有选项卡中更改。通常所有选项卡只有一个会话。会话密钥保存到cookie中,如果他对购物车做了什么,那么它在所有选项卡中都会更改。一个用户只有一个会话,因此您需要以不同的方式处理此用例。一个简单的方法是一次只允许一个报价;或者,您应该创建一个引号数组,并使用产品id作为数组键向其中添加新引号:
$quotes = [
'product_1' => ..., // info about the quote for this product
'product_2' => ..., // info about the quote for this product
];
然后将整个数组存储在会话中。加载页面时,您可以根据产品ID访问报价。用户只有一个会话,因此您需要以不同的方式处理此用例。一个简单的方法是一次只允许一个报价;或者,您应该创建一个引号数组,并使用产品id作为数组键向其中添加新引号:
$quotes = [
'product_1' => ..., // info about the quote for this product
'product_2' => ..., // info about the quote for this product
];
然后将整个数组存储在会话中。加载页面时,您可以根据产品ID访问报价。用户只有一个会话,因此您需要以不同的方式处理此用例。一个简单的方法是一次只允许一个报价;或者,您应该创建一个引号数组,并使用产品id作为数组键向其中添加新引号:
$quotes = [
'product_1' => ..., // info about the quote for this product
'product_2' => ..., // info about the quote for this product
];
然后将整个数组存储在会话中。加载页面时,您可以根据产品ID访问报价。用户只有一个会话,因此您需要以不同的方式处理此用例。一个简单的方法是一次只允许一个报价;或者,您应该创建一个引号数组,并使用产品id作为数组键向其中添加新引号:
$quotes = [
'product_1' => ..., // info about the quote for this product
'product_2' => ..., // info about the quote for this product
];
然后将整个数组存储在会话中。加载页面时,您可以根据产品ID访问报价。根据定义,会话包括: 两个或多个通信设备之间,或计算机与用户之间的对话、对话或会议 当用户在站点上打开多个选项卡时,标准解决方案是确保初始会话在所有选项卡中都可用(这是默认行为)。如果用户在第一个选项卡中获得了报价或向购物车添加了物品,则第二个选项卡中应提供相同的信息。如果在第二个选项卡中添加了新的报价单或购物车项目,则在用户刷新页面时,它应反映在第一个选项卡中 选项卡不是新的会话:它们只是用户可以用来组织自己的工作流的工具
如果您的站点允许用户获取同一项目的不同报价,请为每个项目开发一个标识符,并将报价附加到用户会话中的各种标识符。用户将能够决定购物车中的哪个报价是可接受的,并删除带有不需要的报价的产品。根据定义,会话包括: 两个或多个通信设备之间,或计算机与用户之间的对话、对话或会议 当用户在站点上打开多个选项卡时,标准解决方案是确保初始会话在所有选项卡中都可用(这是默认行为)。如果用户在第一个选项卡中获得了报价或向购物车添加了物品,则第二个选项卡中应提供相同的信息。如果在第二个选项卡中添加了新的报价单或购物车项目,则在用户刷新页面时,它应反映在第一个选项卡中 选项卡不是新的会话:它们只是用户可以用来组织自己的工作流的工具
如果您的站点允许用户获取同一项目的不同报价,请为每个项目开发一个标识符,并将报价附加到用户会话中的各种标识符。用户将能够决定购物车中的哪个报价是可接受的,并删除带有不需要的报价的产品。根据定义,会话包括: 两个或多个通信设备之间,或计算机与用户之间的对话、对话或会议 当用户在站点上打开多个选项卡时,标准解决方案是确保初始会话可用