警告:与此线程类似,但仍然不同。
在家庭滚动的 ecomm 应用程序中,当将商品添加到购物车时,所有实例通用的 Perl 模块将创建一个参数为 order_id 的会话:
$self->session_config(
DEFAULT_EXPIRY => '+4h',
COOKIE_PARAMS => {
-name => 'ECOMM_SESSID',
-expires => '+4h',
-path => '/',
-domain => '.mydomain.com',
},
SEND_COOKIE => 1
);
此实例由
cart.cgi
触发,它调用 Cart.cgi
。
查看购物车时,会显示变量转储
$self->session->param( 'order_id' )
= 4123`session id = 1111111
*ECOMM_SESSID
标题中的 cookie†当其他商品添加到购物车时,变量转储继续显示相同的值。
如果点击“结帐”,
shipping.cgi
会触发呼叫 Shipping.pm
。在模块的 cgiapp_prerun
部分检查 order_id 参数是否存在。然而,数据转储显示:
$self->session->param( 'order_id' )
= 空`session id = 2222222
*ECOMM_SESSID
cookie 缺失†正在创建新会话,丢失 order_id 参数。
有趣的是,如果我返回购物车,所有原始值都在那里。
所以,我的问题:如何阻止新会话,从而保留旧会话和结帐过程中继续所需的值?
*简化 †在浏览器检查器中
解决了我的问题。 PEBKAC 错误。原因是重新创建两个具有相同名称但不同 ID 的会话是因为运输模块使用了不同的域名。因此,新域名的引入迫使新的会话出现。背景故事:我已将其设置为暂存站点,但在将其上线后,忘记调整发货链接。终于在网址里看到了。插头拍