转义表单数据

时间:2012-08-25 02:54:41

标签: php security escaping

我在转义数据时遇到了一些问题,或者至少是涉及它的代码的清洁度。

让我们说,我正在逃避一个名为“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']已被剥夺其他字符?

1 个答案:

答案 0 :(得分:1)

不确定。按引用foreach循环,而不是像这样循环:

foreach($_POST as $name => &$value)
{
    $value = preg_replace( "/[<>#$%]/", "", $value);
    $value = preg_replace('/\s\s+/', ' ', $value);
}

请注意$value前面的&符号。这意味着迭代数组时得到的$value引用到数组本身的值,而不是该值的副本。