我尝试清除 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
名称和值并使用新值重新设置帖子
我的猜测是,您看到了如何做类似的事情,并认为它需要像字符串一样运行。事实并非如此。相反,我认为这是您希望实现的代码:
<?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');