我正在使用正常的數據庫方法而不是預準備語句的數據庫驅動的網站。因此,我必須在傳遞給表單動作PHP腳本時清理POST和GET變量。錯誤抑制運算符是否使用錯誤練習?
定義了一個sanitise
方法,它試圖儘可能最好地清理用戶輸入,但我試圖減少測試POST和GET變量存在的代碼,以及用於定義具有默認值的變量的代碼不存在。
這是我想出了,但它留下的地雷和其他開發人員的口不好的味道,因爲我們都覺得錯誤抑制操作被濫用:
$Page = sanitise(@$_GET["page"], "Unspecified");
$Timestamp = sanitise(@$_POST["time"], time());
請你能給我一些批評這段代碼?這是不理想的,我會同意,但它確實減少了很多代碼,並且比我們的可讀性更強。
我試圖達到如下一行:
- 測試一個變量的存在。
- 如果存在,請清理輸入並分配給變量。
- 如果不存在,請創建一個變量但使用默認值。
您怎麼看?
這有點被問什麼我這裏延續:
Passing unset variables to functions
現在,我喜歡! – 2011-04-06 22:17:09
這是相當冗長的,考慮到它做同樣的事情。 – 2011-04-06 22:25:16
@Tomalak - 確實,它需要更多的代碼行,但它封裝了邏輯,使得所有事情都變得更具表現力,IMO。 – TaylorOtwell 2011-04-06 22:30:09