因此搜索了互聯網和計算器,找到了之前可能討論過的任何相關內容或任何文章,我找不到任何文章,所以我發現自己創建了主題。驗證技巧 - 公開討論
我正在一個項目,我在POST上做了很多ajax請求。 Therfor驗證扮演着重要的角色,因爲它必須是。
所以我創造了一些驗證功能下
//only numeric (integer) regexp [1-9]
Validation::isInteger($a);
//numeric and alphabetic (integer&string) regexp [a-z1-9]
Validation::isAlphaNum($c);
//(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday) Regexp
Validation::isDay($d);
//Array numeric (integer) Regexp
Validation::isArrayNum($sortTo);
我用它在我的代碼是這樣的上市,但這似乎這麼醜! 在型號:
if(Validation::isInteger($a))
{
if(Validation::isAlphaNum($c))
{
if(Validation::isDay($d))
{
if(Validation::isArrayNum($sortTo))
{
//do process here!
}}}}
然後,我想過做驗證這樣可能;不確定它是否安全! 在型號:
if(!Validation::isInteger($a) &&
!Validation::isAlphaNum($c) &&
!Validation::isDay($d) &&
!Validation::isArrayNum($sortTo)) exit;
//do process here anyway without "if" closure if you dont pass validation above you won't see me!
我的問題是:
- 我應該在控制器或模型驗證數據?有關係嗎?
- 我的第二種方法安全嗎?
- 你如何驗證你的數據? (什麼是你的設計代碼)
- 我可以用什麼其他方法/技巧來美化這種醜陋。
備註:我不太關心由於驗證失敗而拋出的錯誤。
編輯:(23.02.2014)但是,如果您在驗證中遇到同樣的問題,或者想要提出一個想法,我真的建議您觀看一下,但我發現了一個視頻,該視頻對youtube.com中phpacademy的驗證有很好的解釋。 http://www.youtube.com/watch?v=rWon2iC-cQ0&index=13&list=PLfdtiltiRHWF5Rhuk7k4UAU1_yLAZzhWc
太多嵌套如果.. – sagheer
您可以使用標誌並將它們和字符串傳遞給一個執行所有驗證的函數。 – ElefantPhace
不是它實際上是問題的一部分,但是如果你在一個條件中進行所有測試,它應該是'||'而不是'&&'(如果上面的話嵌套是相同的)。或者擺脫不操作者。 –