我刚刚将我的IDE(Netbean)升级到1.7.4测试版,以测试它。。。现在,每当我访问超全局变量时,它似乎都会给我一个警告。上面写着
不直接访问supergolobal$_POST阵列
我目前正在使用这个
$taxAmount = intval(ceil($_POST['price']*($TAX-1)));
这到底有多大的安全隐患?
这是正确的方法吗?它有什么不同吗?
$price = $_POST['price'];
$taxAmount = intval(ceil($price*($TAX-1)));
不,您可以使用第一个方法,而不使用重复的数据填充内存。这里唯一需要注意的是在使用之前对其进行验证,若将其复制到另一个变量,也需要对其进行同样的操作。
我看不出有什么区别!
特别是如果您不想在sql_query中使用它。
唯一让我思考的是,直接在超全局中编写并不常见,因此一些糟糕的程序员可能会留下未经验证的数据。
最后一件事,请确保使用"empty"或"isset"函数检查您的"$_POST"是否存在。
示例:
If(!empty($_POST['price']))
$taxAmount = intval(ceil($_POST['price']*($TAX-1)));
else
$taxAmount = -1; //Somethings wrong.
可能的重复