我尝试清除php文件第一行的所有$_POST
我使用函数通过tirm
,stripslashes
和mysql_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
名称和值
并重新设置具有新值的帖子
答案 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');