使用过滤值设置动态$ _POST名称

时间:2016-03-13 01:30:41

标签: php post

我尝试清除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名称和值 并重新设置具有新值的帖子

2 个答案:

答案 0 :(得分:0)

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

<?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);     
}

有很多很棒的help on arrays at 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');

答案 1 :(得分:0)

这是将函数应用于帖子数组的简单方法:

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');