我的網頁已運行2個月,
2個月期間都沒有任何問題,
但昨天突然有客戶反映無法正常使用,顯示錯誤500。
我原本認為是權限設定錯誤?
但後來我跟工程師再次檢查及測試,都可以正常使用。
很奇怪,我的所有設備(桌電1筆電2、手機*3)都可以正常使用該網頁,
但客戶的手機卻一直顯示錯誤500......
後來我從台北飆到台南跟客戶見面,
我試著刪除他手機瀏覽器的Cookie,
就可以正常使用了............................
很神奇。
請問各位,
會發生此錯誤,原因大概是什麼呢?
為何刪除Cookie就可以了?
謝謝各位
過來人的經驗給你知道。
cookie的錯誤是很容易碰到的事。
一但錯誤的話,只有兩種做法,一是清掉,二是另建。
但最根本的問題還是要處理。
依照我的經驗,你的程式碼中有需要用cookie值的地方。它是不容許空值的。
一但空值就會發生錯誤。類似以下的做法,我舉例其一
$abc = $_COOKIE['abc'];
$this->db("SELECT * FROM WHERE abc=".$abc);
像如上的寫法,一但abc值是空值的情況下。就會發生錯誤。
最後再教你一下。你的cookie如果沒有前綴碼的動作。最好連帶加入一下。
像你的問題一但從server log中發現。你只要改一下cookie的前綴碼讓他重建。
就不需要從台北跑來台南了。
謝謝你!!
但還是很好奇
為何已經2個月了
才會發生錯誤呀??
因為cookie的錯誤是可遇不可求。二個月算快了。
我曾經是4個月後才發現這個bug。你該感謝你那個客戶肯跟你回報。
再加上cookie並非是可以完全由server干預的參數值。
你永遠都不會知道會發生什麼事。
其實我現在很少用cookie了。就算會用也是跟主要的資源無關。
有也好,沒有也可以。至少就算cookie產生或建立不了的情況下也不會出程式錯誤。
這邊在說明一下使用cookie的應用。
其一,我的程式內不會直接用
$_COOKIE
這個值。
一般我COOKIE或是POST、GET還是SESSION。
我都會統一用一個CLASS經過處理,如INPUT CLASS
然後所有的資源都會透過如下的應用來處理
$this->input->cookie->???;
$this->input->set_cookie();
其目的就是在確定一些可能性的外來值不明原因的影響來造成程式錯誤。
cookie值只要經過input class後。無論正常與否。都可以確保來源單純。
500 error
基本上是server端有問題
如果你說把客戶的cookie刪除就正常
那我猜可能是客戶cookie裡的資料會導致你的server錯誤吧
話說你的server沒有log可以看嗎
如果可以
最好是取得發生錯誤時的相關資料
把問題重現並解決
不然感覺有點怕怕的
會不會是你的伺服器後端的程式,處理了已經過時的cookies? 必要的話把你的cookies 效期設短一點,免得在測試修改階段就因為這些狀況跑個沒完沒了
500是Server端的錯誤,
通常我都會在Server記Log了解錯誤,
不過客戶手機顯示500這件事,
如果不是你們原本就這樣規劃的話,
讓使用者看到錯誤訊息似乎不大適合.