2015-06-20 79 views
2

我已經在Opencart論壇上發佈了這個,但是沒有人能夠找出問題所在。Opencart和PHP非常奇怪的會話問題

運行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

我們需要查看所有設置,例如save.session_path以及處理您的登錄和Cookie的代碼。 – Barett

+0

你有沒有啓用任何頁面緩存? –

+0

@ Barett-已添加相關代碼。不確定哪些文件處理cookie和登錄。讓我知道,所以我可以發佈相關的代碼。 – ASG

回答

0

沒有電子郵件(簡化登記表),這個問題是由於一些客戶。 Opencart很困惑。解決方案:

首先更新客戶隨機電子郵件(請注意,電子郵件不用於達成與客戶):

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

然後更新登記表,生成在註冊隨機的電子郵件,以避免再次出現此類問題。

聲明:我有權訪問該平臺。

0

我希望這個解決方案能夠幫助任何面向Opencart的用戶。

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

與我在其他地方遇到的相同問題的解決方案相反,它沒有任何操作會話存儲和共享主機 - 我在無法共享會話存儲的VPS上遇到此問題。