在PHP中验证变量的最有效方法是什么?

时间:2011-11-22 17:57:21

标签: php sql validation get micro-optimization

我正在考虑一个从用户那里收到大量数据的应用程序。 但是这些数据必须在php中验证:

f.e。 $ _GET ['id']必须是一个数字,每个数组元素必须是特定范围之间的值。

那么is_int($x)isset($x)等功能的效率如何? 也许如果($ x!= null)更快或(int)x导致相同的结果。

处理需要快速访问数据库但需要验证的数据的最佳方法是什么? $ _GET和$ _POST的速度有什么不同吗?

也许实施一个改进的课程?

也许有更难以回答的机会,这里有点无用的代码:

if(isset($_GET["x"]) && $_GET["x"] > 0) { $x = $_GET["x"]; }
if(isset($_GET["y"]) && $_GET["y"] > 0) { $y = $_GET["y"]; }
if(isset($_GET["winWidth"]) && $_GET["winWidth"] > 0) {  $winWidth = $_GET["winWidth"]; }
if(isset($_GET["winHeight"]) && $_GET["winHeight"] > 0) {   $winHeight = $_GET["winHeight"]; }
if(isset($_GET["a"])) {  $a = $_GET["a"]; }

更新:

如进一步的安全功能如何:

mysql_real_escape_string($str);

stripslashes()

? 请Stackoverflow,告诉我魔术:)

哈利

1 个答案:

答案 0 :(得分:1)

检查某些内容是否已发布以及是否为正整数的最快方法:

if (isset($_POST['field']) && ctype_digit($_POST['field']))
mysql_real_escape_string相比,

addslashes速度极慢。但是,它肯定更安全。

然而,通常没有必要过多地担心这一切。我们在这里谈论的是十亿分之一秒。