1

工作Localhost。我想为每个特定客户存储一个会话值。

当我将我的价值存储在Mage::getSingleton('core/session')->setMyVal('something')相同的价值中时,所有客户都会出现。当我看到这个时我很害怕......这就像客户会话劫持。我希望会话是私人 foreach 客户。

当我使用时Mage::getSingleton('customer/session')->setMyVal('something'),我使用客户帐户得到了这个“东西”,然后注销并用不同的客户登录,我又看到了同样的“东西”......

例如,如果我想存储“登录日期时间”,那么对于每个客户来说当然应该是不同的。或者我不明白 PHP 会话是如何工作的。

4

3 回答 3

1

您可以在为客户存储会话时使用客户 ID(如 Ansyori 所述),但请务必在注销时将其销毁。

于 2013-12-26T06:58:55.950 回答
1

也许这会帮助你,有点棘手

$sess_var = array (
     "custId" => Mage::getSingleton('customer/session')->getCustomer()->getId(),
     "value"=> "your value here"
);

Mage::getSingleton('customer/session')->setMyVal($sess_var)
于 2013-12-26T04:09:52.417 回答
1

会话与浏览器会话相关联。有可能即使注销会话并没有完全破坏,但仍然可以通过该浏览器会话从该计算机访问,但其他任何人都应该可以访问它。您应该尝试在不同浏览器或其他浏览器上以隐身模式打开同一页面,看看值是否仍然相同。会话 ID 存储在 cookie 中

如果要在登录时销毁会话,请找到 magento 注销处理程序并添加 session_destroy(); 在那里或在那里取消设置您的自定义会话变量。

会话也是您在离开公共计算机时应该清理 cookie 和其他信息的原因。注销处理程序还应从会话中删除所有用户详细信息。会话数据存储在服务器上,如果您不将会话数据输出给用户,访问者将无法看到其中存储的内容。

于 2013-12-26T06:25:22.783 回答