Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的系统需要多个PHP会话吗?_Php_Session_Session Variables_Session Cookies - Fatal编程技术网

我的系统需要多个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访问报价。

根据定义,会话包括:

两个或多个通信设备之间,或计算机与用户之间的对话、对话或会议

当用户在站点上打开多个选项卡时,标准解决方案是确保初始会话在所有选项卡中都可用(这是默认行为)。如果用户在第一个选项卡中获得了报价或向购物车添加了物品,则第二个选项卡中应提供相同的信息。如果在第二个选项卡中添加了新的报价单或购物车项目,则在用户刷新页面时,它应反映在第一个选项卡中

选项卡不是新的会话:它们只是用户可以用来组织自己的工作流的工具


如果您的站点允许用户获取同一项目的不同报价,请为每个项目开发一个标识符,并将报价附加到用户会话中的各种标识符。用户将能够决定购物车中的哪个报价是可接受的,并删除带有不需要的报价的产品。

根据定义,会话包括:

两个或多个通信设备之间,或计算机与用户之间的对话、对话或会议

当用户在站点上打开多个选项卡时,标准解决方案是确保初始会话在所有选项卡中都可用(这是默认行为)。如果用户在第一个选项卡中获得了报价或向购物车添加了物品,则第二个选项卡中应提供相同的信息。如果在第二个选项卡中添加了新的报价单或购物车项目,则在用户刷新页面时,它应反映在第一个选项卡中

选项卡不是新的会话:它们只是用户可以用来组织自己的工作流的工具


如果您的站点允许用户获取同一项目的不同报价,请为每个项目开发一个标识符,并将报价附加到用户会话中的各种标识符。用户将能够决定购物车中的哪个报价是可接受的,并删除带有不需要的报价的产品。

根据定义,会话包括:

两个或多个通信设备之间,或计算机与用户之间的对话、对话或会议

当用户在站点上打开多个选项卡时,标准解决方案是确保初始会话可用