因此搜索了互联网和计算器,找到了之前可能讨论过的任何相关内容或任何文章,我找不到任何文章,所以我发现自己创建了主题。验证技巧 - 公开讨论
我正在一个项目,我在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
不是它实际上是问题的一部分,但是如果你在一个条件中进行所有测试,它应该是'||'而不是'&&'(如果上面的话嵌套是相同的)。或者摆脱不操作者。 –