我正在使用正常的数据库方法而不是预准备语句的数据库驱动的网站。因此,我必须在传递给表单动作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