快速答案:預約系統三個最常見的狀況:A 店家看到 B 店家的客戶,是資料查詢沒有依店家篩選,或登入後的頁面被快取共用;預約資料不見,先別急著整站還原,先確認是被覆蓋、被自動清除,還是存在別處;未登入看不到預約表,多半是快取或延遲載入 JavaScript 弄壞了預約元件,登入者繞過快取所以看得到。
為什麼會這樣 #
多店家的預約平台,每筆預約和客戶都要掛在某個店家底下,列表再依目前登入的店家篩選。用動態欄位或表單外掛自己拼出來的系統,常常漏了這一層,下拉選單把全站客戶都列出來;更危險的是快取把登入後的頁面也存起來,A 店家看到的其實是別人剛剛的畫面。
資料消失常見的原因是把測試站推回正式站,測試站複製之後才進來的預約全被蓋掉;其次是還原備份、外掛設了「自動刪除過去的預約」、換外掛時沒搬資料。用外部預約服務的,資料根本不在 WordPress 裡。
未登入看不到,是訪客拿到的快取頁面裡安全碼已經過期,或優化外掛把預約元件的腳本延後、合併,元件初始化失敗;管理員登入時不走快取,自己測永遠正常。外掛本身也可能設了「登入才能預約」。
怎麼處理 #
- 看到別家資料:先確認預約頁、店家後台與登入後的頁面都不被快取;再用兩個店家的測試帳號各登入一次,檢查列表、下拉選單、匯出是否只有自己的資料。
- 查詢條件加上「店家等於目前使用者」或對應的關聯欄位,店家角色只給看自己資料的權限。
- 資料不見:先匯出目前還在的預約與訂單,把備份還原到測試站比對,只把缺的那段補回正式站,不要直接整站還原。
- 查外掛有沒有自動刪除舊預約的選項,看活動紀錄最近誰推過測試站或更新過外掛。
- 每筆預約都寄一封通知信給管理者,資料出事時還有第二份紀錄;旺季提高備份頻率。
- 未登入看不到:用無痕視窗開預約頁,把該頁排除快取與 JavaScript 延遲、合併,並確認外掛沒要求登入。
- 外部預約服務的外掛不穩時,改用服務商官方提供的 iframe 嵌入碼。
我們實際遇過的情況 #
一個多店家的服務平台,A 店家新增預約時,客戶選單裡出現了 B 店家的客戶。這屬於資料隔離問題,要從查詢條件與快取兩頭查,改完用不同店家的帳號交叉測試。
一家預約制的活動業者某天發現預約資料不見,當時先還原前一天的備份救急。回頭看,更穩的順序是先匯出現況、在測試站比對、最後才動正式站——直接還原,還原點之後進來的預約會一起消失。另一個網站的外部預約元件在未登入時前台不顯示,改用官方 iframe 嵌入後恢復正常。
什麼時候該找人 #
客戶資料被別的店家看到,已經是個資外洩,要立刻停用有問題的頁面再修,並評估是否要通知當事人。預約資料不見時先停手,錯誤的還原會把還在的資料一起蓋掉。備份與還原的取捨可參考 網站備份多久一次。
WPTOOLBEAR網站工具熊