我在转义数据时遇到了一些问题,或者至少是涉及它的代码的清洁度。
让我们说,我正在逃避一个名为“FirstName”的文本域,它看起来像这样:
$FirstName = mysqli_real_escape_string($link, $_POST['FirstName']);
$FirstName = preg_replace( "/[<>#$%]/", "", $FirstName);
$FirstName = preg_replace('/\s\s+/', ' ', $FirstName);
无论如何,我可以把最后两行放在某种循环中,让我们这样说:
foreach($_POST as $name => $value)
{
$value = preg_replace( "/[<>#$%]/", "", $value);
$value = preg_replace('/\s\s+/', ' ', $value);
}
然后我要做的就是
$FirstName = mysqli_real_escape_string($link, $_POST['FirstName']);
其中$ _POST ['FirstName']已被剥夺其他字符?
答案 0 :(得分:1)
不确定。按引用foreach
循环,而不是像这样循环:
foreach($_POST as $name => &$value)
{
$value = preg_replace( "/[<>#$%]/", "", $value);
$value = preg_replace('/\s\s+/', ' ', $value);
}
请注意$value
前面的&符号。这意味着迭代数组时得到的$value
是引用到数组本身的值,而不是该值的副本。