我从程序员那里拿起网站,几乎所有的时间他都找到了一些功能声明。
他包括类和调用函数,例如update_user_info($_POST);
然后在课堂上就像这样
...
function update_user_info($obj) {
if (!empty($_POST["user_name"]) && !empty($_POST["user_email"])) (
$sql = "UPDATE myusers SET user_name = {$_POST["user_name"]} WHERE user_id = {$_POST["user_email"]}";
...
)
}
...
有趣的是她从不使用$obj
变量。
我试图告诉他,但他说这没有区别,如果我使用它或直接发布我知道它的错误但不能喜欢把它说出来,有人能告诉我几点为什么这不是好的做法?< / p>
编辑:从安全角度来看,只是常识,即使将变量传递给函数并且之后不再使用它,对我来说也没有任何意义。 例如如果我决定改变发布到函数的变量,它将不会影响任何东西,因为函数失去了它被封闭,普遍的本质的本质。他使用它的方式就像常规代码只是放在别处,没有理由他可以在同一个文件中执行它,他称之为函数效果是相同的。他 每个页面都有新功能,我从未见过任何其他页面通过项目实际重复。
答案 0 :(得分:1)
在没有过滤的情况下接受这样的$ _POST用户输入会让您对SQL Injection开放。
至于$obj
的使用,由于你截断了代码,因此不清楚它是如何被使用的。但是,如果它确实从未在函数内部使用过,那么就没有理由将它放在那里。但是,听起来你只是指在括号内使用$obj
。在那种情况下,它是函数的一个参数,在调用函数之前它实际上没有声明。在这种用法中,永远不要声明$obj
,然后将其用作函数参数。事实上,这是更可取的。