Troubleshooting of PHP errors: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
Line 7: Line 7:
* 檢查該檔案所在該目錄是否已經建立,若未建立則需要建立 [http://php.net/manual/en/function.mkdir.php mkdir],並設定可以寫入。如果是巢狀的多層目錄,則需要啟用 $recursive <ref>[http://stackoverflow.com/questions/2303372/create-a-folder-if-it-doesnt-already-exist php - Create a folder if it doesn't already exist - Stack Overflow]  code snippet: <nowiki>mkdir('path/to/directory', 0755, true);</nowiki> </ref>
* 檢查該檔案所在該目錄是否已經建立,若未建立則需要建立 [http://php.net/manual/en/function.mkdir.php mkdir],並設定可以寫入。如果是巢狀的多層目錄,則需要啟用 $recursive <ref>[http://stackoverflow.com/questions/2303372/create-a-folder-if-it-doesnt-already-exist php - Create a folder if it doesn't already exist - Stack Overflow]  code snippet: <nowiki>mkdir('path/to/directory', 0755, true);</nowiki> </ref>
* 檢查該檔案是否可以寫入 [http://php.net/manual/en/function.is-writable.php is_writable]: 如果要刪除檔案,需要檢查是否可以寫入
* 檢查該檔案是否可以寫入 [http://php.net/manual/en/function.is-writable.php is_writable]: 如果要刪除檔案,需要檢查是否可以寫入
== 使用者操作/使用者輸入的內容 ==
使用者輸入內容,內容可能是
* 空值 ex: 空白、全形空白、NULL、0000-00-00
** PHP: 陣列元素中的空白值,可用 [http://www.php.net/manual/en/function.array-filter.php array_filter] 函數移除。
* 文字字串間夾雜空白
* 輸入文字內容的前後有額外的空白。處理方式:
** PHP: 可用 [http://php.net/manual/en/function.trim.php rim] 函數處理。陣列元素值則搭配 [http://php.net/manual/en/function.array-map.php array_map] 函數處理。ex: {{kbd | key = <nowiki>$trimmed_array = array_map('trim' ,$array);</nowiki>}}<ref>[http://stackoverflow.com/questions/5762439/how-to-trim-white-spaces-of-array-values-in-php How to trim white spaces of array values in php - Stack Overflow]</ref>
** jQuery: [http://api.jquery.com/jQuery.trim/ $.trim('string')]
* 包含特殊符號 ex: 單引號 ', 雙引號 ", 反斜線 \, 大於小於符號 > < <== 對策: [http://www.php.net/manual/en/function.htmlentities.php PHP: htmlentities - Manual]
* 超出預期的內容長度、超出預期的資料數量
* 資料數量從少量變成多量時
* 重複的內容 ex: Excel 欄位重複
* (可勾選多個項目的狀況下) 只勾選了單一項目或者沒有勾選項目,就送出(submit)表單資料
* (如果允許輸入多行文字) 包含換行符號
* 嘗試進行 [https://en.wikipedia.org/wiki/SQL_injection SQL injection]
使用者操作
* 重複點選按鈕
* 在輸入框內,輸入完文字後,按一次或多次的 {{kbd | key=Enter}} 鍵
* 使用 {{kbd | key=Tab}} 鍵,將游標移到下一個輸入框
使用者環境
* 各種瀏覽器 + 擴充套件 ex: AdBlock
* 各種設備
* 不同網路環境:連線快或慢
== 操作順序 ==
* 使用者的操作順序,可能不按照功能設計的順序
* 沒有選取任何項目,就提交(submit)或操作表格
== 網頁 UI 元件回饋訊息 ==
* 操作錯誤時的回饋訊息,例如輸入錯誤帳號密碼的回饋
* 資料儲存變動的回饋訊息,例如資料順利儲存時顯示「儲存成功」
* 搜尋結果的回饋訊息,例如搜尋結果顯示結果筆數


== PHP 技術問題處理 ==
== PHP 技術問題處理 ==
Line 160: Line 125:
狀況3: 開啟 Excel 檔案,看到有儲存格位址之類的錯誤訊息
狀況3: 開啟 Excel 檔案,看到有儲存格位址之類的錯誤訊息
* 解法: 該儲存格內容以等號 (=) 開始,卻不是函數。解決方式是將儲存格內容的最前面加一個單引號 (') 或者是加個空白。
* 解法: 該儲存格內容以等號 (=) 開始,卻不是函數。解決方式是將儲存格內容的最前面加一個單引號 (') 或者是加個空白。
== 使用者操作/使用者輸入的內容 ==
[[Web user behavior]]


== unified coding style ==
== unified coding style ==

Navigation menu