使用筛选值设置动态 $_POST 名称


setting dynamic $_POST name with filtering value

我尝试清除 php 文件第一行的所有$_POST我使用功能通过tirmstripslashesmysql_real_escape_string清除它

function filter($data) {
$data = trim(htmlentities(strip_tags($data)));
if (get_magic_quotes_gpc())
$data = stripslashes($data);
$data = mysql_real_escape_string($data);
return $data;
}


  foreach ($_POST as $key => $value) {
$test="['".$key."']";  
$_POST.$test=array(filter($value));     
    }

我尝试在这里获取所有$_POST名称和值并使用新值重新设置帖子

我的猜测是,您看到了如何做类似的事情,并认为它需要像字符串一样运行。事实并非如此。相反,我认为这是您希望实现的代码:

<?php
function filter($data) {
    $data = trim(htmlentities(strip_tags($data)));
    if (get_magic_quotes_gpc()) {
        $data = mysql_real_escap_string(stripslashes($data));
    }
    return $data;
}
foreach ($_POST as $key => $value) {
    $_POST[$key] = filter($value);     
}

在 php.net,数组有很多很好的帮助。如果你正在寻找更高级的东西,我建议你研究一下array_walk。你的代码会更高性能,看起来像这样:

<?php
function filter(&$data) {
    $data = trim(htmlentities(strip_tags($data)));
    if (get_magic_quotes_gpc()) {
        $data = mysql_real_escap_string(stripslashes($data));
    }
}
array_walk ($_POST, 'filter');

这里有一个很好的简单方法,可以将你的函数应用到你的post数组:

function filter(&$data) {
    $data = trim(htmlentities(strip_tags($data)));
    if (get_magic_quotes_gpc()) {
        $data = mysql_real_escap_string(stripslashes($data));
    }
    return $data;
}
array_walk($_POST, 'filter');