我在Opencart论坛上发布了这个,但是没有人能够弄清楚问题是什么。
运行Opencart 1.5.6.4。 PHP-5.4.42
如果用户X在网站上登录,如果其他用户访问该网站,他也会自动从X的帐户登录。我亲眼目睹了这一点,当我浏览它时,它显示我是以500英里外的客户身份登录的!如果用户X在他的购物车中添加了某些东西,它也会显示出来。
所以,因为我通过该帐户登录,我可以从该帐户做任何我喜欢的事情,下订单,修改细节等等。吓人!随着网站流量的增加,整个问题变得更加严重。
我已经尝试将save.session_path一起移动到另一个文件夹/ tmp,但它没有帮助。
我不是一个全职开发者,所以有点麻烦搞清楚问题是什么。如果有人可以帮忙的话会很棒。
php.ini具有以下会话相关条目
session.save_path = /webroot/sitename/tmp/
session.use_only_cookies = 1;
session.use_trans_sid = Off;
session.cookie_httponly = 1;
session.gc_maxlifetime = 3600;
session.php
class Session {
public $data = array();
public function __construct() {
if (!session_id()) {
ini_set('session.use_only_cookies', 'On');
ini_set('session.use_trans_sid', 'Off');
ini_set('session.cookie_httponly', 'On');
session_set_cookie_params(0, '/');
session_start();
}
$this->data =& $_SESSION;
}
function getId() {
return session_id();
}
}
答案 0 :(得分:0)
问题是由于一些客户没有电子邮件(简化的注册表格)。 Opencart很困惑。解决方案:
首先使用随机电子邮件更新客户(请注意,电子邮件不会用于联系客户):
update `oc_customer` set email = concat(LEFT(UUID(), 8), '@example.com') where email = '';
然后更新注册表格以在注册时生成随机电子邮件,以避免将来出现这种情况。
免责声明:我可以访问该平台。
答案 1 :(得分:0)
我希望这个解决方案可以帮助任何在Opencart上面对它的用户。
具体问题与页面缓存有关。如果有页面缓存插件,请确保在帐户&结帐页面。结果是缓存的帐户页面最终被提供给多个用户。
与我在其他地方遇到相同问题的解决方案相反,它无关会话存储和共享主机 - 我在无法共享会话存储的VPS上遇到此问题。