簡體   English   中英

Opencart和PHP非常奇怪的會話問題

[英]Very strange session issue with Opencart and PHP

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

該問題是由於某些客戶沒有電子郵件(簡化的注冊表)造成的。 Opencart感到困惑。 解決方案:

首先使用隨機電子郵件更新客戶(請注意,電子郵件不用於聯系客戶):

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

然后更新注冊表格以在注冊時生成隨機電子郵件,以免將來再次出現這種情況。

免責聲明:我可以使用該平台。

我希望該解決方案將對在Opencart上遇到它的所有用戶有所幫助。

具體問題與頁面緩存有關。 如果有頁面緩存插件,請確保在“帳戶和結帳”頁面上將其禁用。 結果是緩存的帳戶頁面最終被提供給多個用戶。

與我在其他地方遇到過相同問題的解決方案相反,它與會話存儲和共享托管無關-我在無法共享會話存儲的VPS上遇到了此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM