我正在尝试通过this tutorial使用mysqli_*
扩展程序来学习面向对象的PHP。
它似乎有点过时,因为它们在连接文件中有一个已从PHP中删除的get_magic_quotes_gpc()
的引用,对吗?
页面上有一个函数如下:
if (get_magic_quotes_gpc()) {
function sanitize($value) {
$value = is_array($value) ?
array_map('sanitize', $value) :
stripslashes($value);
return $value;
}
$_POST = array_map('sanitize', $_POST);
$_GET = array_map('sanitize', $_POST);
$_COOKIE = array_map('sanitize', $_COOKIE);
$_REQUEST = array_map('sanitize', $_REQUEST);
}
现在,如果我取出了初始if
语句的代码,1)是否有效,2)是否需要它?我不太清楚它的作用。
我可以推断的最多是它在stripslashes()
,$_POST
等数组中的每个值上运行$_GET
并返回它们进行清理。它是否正确?如果它仅用于在Magic Quotes打开时运行,现在它已被删除,它现在是否有效使用?
答案 0 :(得分:1)
如果有帮助,可以像这样重写:
function sanitize($value) {
if(is_array($value)) {
$value = array_map('sanitize', $value);
} else {
$value = stripslashes($value);
}
return $value;
}
如果$value
是一个数组,它会在每个项目上自行运行,如果它是一个字符串,它只是运行stripslashes
它。有关详细信息,请查看php.net stripslashes
array_map
上的文档。它基本上采用字符串或数组,并对每个值运行stripslashes
。
也请查看ternary运算符,以帮助清除看起来很奇怪的if
语句。