iT邦幫忙

0

網頁使用端瀏覽時出現錯誤500

我的網頁已運行2個月,
2個月期間都沒有任何問題,
但昨天突然有客戶反映無法正常使用,顯示錯誤500。

我原本認為是權限設定錯誤?
但後來我跟工程師再次檢查及測試,都可以正常使用。

很奇怪,我的所有設備(桌電1筆電2、手機*3)都可以正常使用該網頁,
但客戶的手機卻一直顯示錯誤500......

後來我從台北飆到台南跟客戶見面,
我試著刪除他手機瀏覽器的Cookie,
就可以正常使用了............................
很神奇。

請問各位,
會發生此錯誤,原因大概是什麼呢?
為何刪除Cookie就可以了?

謝謝各位

hsiang11 iT邦研究生 3 級 ‧ 2019-06-13 09:30:21 檢舉
有時候123都正常 客戶就有問題 我會先叫客戶先重開機看看
或許就可以免跑一趟了
0
浩瀚星空
iT邦大師 1 級 ‧ 2019-06-13 11:22:26
最佳解答

過來人的經驗給你知道。

cookie的錯誤是很容易碰到的事。
一但錯誤的話,只有兩種做法,一是清掉,二是另建。

但最根本的問題還是要處理。
依照我的經驗,你的程式碼中有需要用cookie值的地方。它是不容許空值的。
一但空值就會發生錯誤。類似以下的做法,我舉例其一

$abc = $_COOKIE['abc']; 
$this->db("SELECT * FROM WHERE abc=".$abc);

像如上的寫法,一但abc值是空值的情況下。就會發生錯誤。

最後再教你一下。你的cookie如果沒有前綴碼的動作。最好連帶加入一下。
像你的問題一但從server log中發現。你只要改一下cookie的前綴碼讓他重建。
就不需要從台北跑來台南了。

HAHZOZO iT邦新手 5 級 ‧ 2019-06-13 11:28:29 檢舉

謝謝你!!

但還是很好奇
為何已經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後。無論正常與否。都可以確保來源單純。

0
dragonH
iT邦研究生 4 級 ‧ 2019-06-13 09:11:18

500 error

基本上是server端有問題

如果你說把客戶的cookie刪除就正常

那我猜可能是客戶cookie裡的資料會導致你的server錯誤吧

話說你的server沒有log可以看嗎/images/emoticon/emoticon14.gif

如果可以

最好是取得發生錯誤時的相關資料

把問題重現並解決

不然感覺有點怕怕的

0
japhenchen
iT邦新手 4 級 ‧ 2019-06-13 09:50:50

會不會是你的伺服器後端的程式,處理了已經過時的cookies? 必要的話把你的cookies 效期設短一點,免得在測試修改階段就因為這些狀況跑個沒完沒了

0
小魚
iT邦高手 1 級 ‧ 2019-06-13 10:31:09

500是Server端的錯誤,
通常我都會在Server記Log了解錯誤,
不過客戶手機顯示500這件事,
如果不是你們原本就這樣規劃的話,
讓使用者看到錯誤訊息似乎不大適合.

HAHZOZO iT邦新手 5 級 ‧ 2019-06-13 11:30:29 檢舉

謝謝你!!!

"讓使用者看到錯誤訊息似乎不大適合"
是說讓客戶看到錯誤500這個畫面不大適合嗎?

小魚 iT邦高手 1 級 ‧ 2019-06-13 13:42:20 檢舉

如果沒有顯示其他訊息倒是還好,
就看你們自己了.

我也很少用COOKIE,頂多是在一些不太重要的工作上使用,比如以前自動填人帳號(密碼不可以),現在頂多就是收集一些常用習慣,要能做到"可有可無"的檢查,沒有就跳過,不要做重要資料的儲存
手機電腦安全瀏覽,是可以結束即清空COOKIE的

我要發表回答

立即登入回答