網頁表單欄位過多的隱藏陷阱

多年來遇到這個狀況的次數實在不多,就是因為不常遇到,所以更不容易注意到。

這個問題發生時,是你在頁面編輯了一堆欄位資料,送出表單之後,也沒有錯誤訊息,無聲無息的,看起來好像一切正常,可是編輯的資料,卻只有儲存一部分。

前一次發生時,是在 OpenCart 系統後台編輯地區資料,當時因為某個地區包含了非常多的城市,每個城市都包含了非常多的欄位(包含客製欄位,例如排序),使得整個表單的總欄位數,達到 1000 多個,每次更新,就會發現最後那幾筆資料,沒能儲存成功,當時一直以為是中間的欄位含有異常資料干擾了資料儲存動作,可是來回檢查實在看不出問題…

最後終於在 Stack Overflow 看到有人發問類似的狀況,測試了其中一個解法,才確定是 max_input_vars 這個設定值所限制,因為這個值在大多數的環境下預設值是 1000,也就是一次可以接受最多 1000 個來自表單的參數,而我這個複雜的表單,內含超過了 1000 個參數,所以部分資料就被截斷了。

最近這是第 2 次遇到相同的問題了,在 OpenCart 的選項編輯中,使用者建立了超過 400 筆的選項值,而每筆選項都含有 3 個欄位(名稱、圖檔、排序),於是 400 x 3 = 1200 就超過了 1000,將 max_input_vars 修改成 3000 之後,就順利解決問題了,如果你剛好有遇到類似的狀況,不仿也測試一下修改 max_input_vars 這個參數試試吧。

=====================================================
行銷科技深度洞察社團 - GA4, SEO, GDS, CRM, CDP, 電商, 內容, 社群, 廣告
OpenCart 台灣技術支援 - OpenCart 網站代管、客製、維護
OpenCart 台灣電商社團 - 台灣 OpenCart 使用者交流
=====================================================