【问题标题】:Very strange session issue with Opencart and PHPOpencart 和 PHP 的非常奇怪的会话问题
【发布时间】:2015-09-06 16:47:27
【问题描述】:

我已经在 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();
    }
}

【问题讨论】:

  • 我们需要查看您的所有设置,例如 save.session_path,以及处理您的登录和 cookie 的代码。
  • 您是否启用了任何页面缓存?
  • @Barett- 已添加相关代码。不确定哪些文件处理 cookie 和登录。让我知道,以便我发布相关代码。
  • @JayGilford 是的,页面缓存已启用。
  • 那么我会冒险猜测当客户登录时它没有被禁用

标签: php session opencart session-variables session-cookies


【解决方案1】:

问题是由于某些客户没有电子邮件(简化的注册表单)造成的。 Opencart 很困惑。解决方案:

首先使用随机电子邮件更新客户(注意电子邮件不用于联系客户):

update `oc_customer` set email = concat(LEFT(UUID(), 8), '@example.com') where email = '';

然后更新注册表以在注册时生成随机电子邮件,以避免将来出现这种情况。

免责声明:我可以访问该平台。

【讨论】:

    【解决方案2】:

    我希望这个解决方案能帮助任何在 Opencart 上遇到它的用户。

    具体问题与页面缓存有关。如果有页面缓存插件,请确保在帐户和结帐页面上禁用它。结果是缓存的帐户页面最终被提供给多个用户。

    与我在其他地方遇到相同问题的解决方案相反,它与会话存储和共享托管无关 - 我在无法共享会话存储的 VPS 上遇到了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-07
      • 2016-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多