[英]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.