Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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 Magento客户/会话不工作_Php_Session_Magento_Model - Fatal编程技术网

Php Magento客户/会话不工作

Php Magento客户/会话不工作,php,session,magento,model,Php,Session,Magento,Model,当前端的订单历史记录页面(*/sales/order/history/)只显示一条短消息时,这个问题首先出现:您没有下订单 经过调试,问题出在这个函数上: Mage::getSingleton('customer/session') 它不会返回包含当前客户信息(网站id除外)的会话实体,这就是订单集合在过滤客户id后返回空结果的原因 实际上,有一篇关于堆栈溢出的帖子讨论了一个类似的问题: . 但它并没有给出一个很好的解释 令人困惑的是,在我的例子中,这个函数在某些部分工作得很好,但在其他部分却

当前端的订单历史记录页面(*/sales/order/history/)只显示一条短消息时,这个问题首先出现:您没有下订单

经过调试,问题出在这个函数上:

Mage::getSingleton('customer/session')
它不会返回包含当前客户信息(网站id除外)的会话实体,这就是订单集合在过滤客户id后返回空结果的原因

实际上,有一篇关于堆栈溢出的帖子讨论了一个类似的问题: . 但它并没有给出一个很好的解释

令人困惑的是,在我的例子中,这个函数在某些部分工作得很好,但在其他部分却不行。例如,我插入了

<?php echo var_export(Mage::getSingleton('customer/session')->getCustomerId(), true) ?>  
设置网站id后,它将根据$this->getId()加载客户实体


为什么客户会话实体的“id”属性并不总是有效?有人能分享他的知识吗。非常感谢。

假设问题出在某个特定区域,我会小心处理Magento。在你意识到你需要从头开始之前,你可以从一个相当深的兔子洞开始

如果您认为问题出在会话getter上,请尝试以下方法:

Mage::getSingleton('core/session', array('name' => 'frontend'));
但我也会继续寻找其他选择。听起来与许多人在缓存方面遇到的问题类似。考虑在关闭所有缓存时尝试相同的方法。整页缓存可以对变量值执行意外操作


在您的示例中,您从哪个文件回音?在进一步帮助之前,我需要知道这一点。

如果您使用的是Google Chrome,您可以右键单击页面,选择检查元素,然后选择资源选项卡,在左侧菜单下查找Cookies,然后单击您的域名

在域名下,将显示为其设置的cookies,以及路径、到期日等。非常有用

在您的情况下,您正在“name”下查找“前端””会话cookie。您可以删除它,然后刷新页面以查看Magento是否重新创建它,在这种情况下,会话可能会正常工作。希望有帮助:)


PS:Magento会大量使用会话,如果会话被破坏,其他东西也会在整个节目中被破坏。

我将对一些Mage问题给出这个答案,因为没有人提到Cookie的设置可能不正确。在导入了一个包含错误cookie域的DB更新之后,我们浪费了一个上午的时间

确保核心配置数据表对此路径值具有正确的设置:

web/cookie/cookie_domain
域应该与URL中的内容匹配


有趣的是,当客户会话为空并且您正在访问历史记录页面时,为什么用户没有被重定向到登录页面(customer/account/login/)。请验证是否定制了Mage_客户或Mage_销售


如果它被重写,这将是第一个检查的地方。

订单历史页面是HTTPS,而目录页面是HTTP?这可能是因为会话在两者之间的传递不正确。不,它们都在使用HTTP。从软件包中可以看出,对这些页面的请求是相同的,除了请求的URL和引用。事实上,在/sales/order/history/page上,客户没有被“视为”登录。也没有显示“注销”链接。如果客户在某些页面上被视为未登录,会出现什么问题?请查看错误日志以获取任何线索。请注意,在将任何输出发送到浏览器之前必须调用
session\u start()
,因此,如果出现错误,可能会阻止会话启动。我认为问题来自已在自定义模块中重写的调度过程。需要更多的努力才能让事情变得清楚。在我的例子中,有两个adminhtml值,它们完全相同,但我认为系统被搞糊涂了。无论如何,这个评论帮我省去了很多麻烦。@DWils如果你仔细看,你可能有一个cookie用于
domain.com
,另一个用于
.domain.com
。这允许域和所有子域的cookie处于安全和不安全状态。您可以在系统>配置>[常规]>网络>会话Cookie管理中关闭该功能。清除Cookie路径和Cookie域字段。
web/cookie/cookie_domain
web/cookie/cookie_domain = .myawesomemagentosite.com