php post过滤,PHP过滤所有$_POST数据

首先假设我们有个form表单,并且以POST的类型把数据提交到服务器,比如接收form表单数据的PHP页面

if(is_array($_POST)&&count($_POST)>0)

{

if((isset($_POST[“user”])&&!empty($_POST[“user”]))&&(isset($_POST[“password”])&&!empty($_POST[“password”])))

{

$i=$_POST[“user”];$o=$_POST[“password”]; //我们假设POST过来user和password两个参数,然后下面是作者写的小函数,可以在接收有POST的数据上增加

/***************调用开始*******************/

$login=array($i,$o,);//把POST的数据数组化,你有多少POST的数据要过滤就增加多少个.

require_once(“filtration.php”); //包含过滤文件

$filtration->filtration($login); ?//调用过滤函数,并且把数组传递给filtration的数组参数.

/***************调用结束*******************/

echo “无过滤字符号,成功登陆”; //过滤之后的响应方法

}

else

{

echo “请完整输出”;exit;

}

}

让我们来看看filtration.php的文件:

header(“Content-Type:text/html;charset=utf-8”);

error_reporting( E_ALL&~E_NOTICE ); //除去 E_NOTICE 之外的所有错误信息

class Filtration

{

private $str=array();//私有数组成员,用于接收POST的数组

function filtration($arrayfiltration=array()) //过滤函数,带一个数组变量$arrayfiltration,

{

$this->str=$arrayfiltration; //函数的$arrayfiltration数组接收POST的数组传值给私有数组$str

$str1=array(

‘过滤1′,’过滤2’,

‘过滤3′,’过滤4’,

‘过滤5′); //需要过滤的数值

$arraystr=count($this->str); //判断POST过来的数组有多少个元素

for($o=0;$o

{

for($i=0;$i

{

$j=substr_count($this->str[$o],$str1[$i]); //根据POST的数组元素数量执行$this->str和预定义的过滤数组$str1

/*

这比等于for一次循环是根据POST的元素数量来执行,POST多少个执行多少次

然后$o++表示执行的次数字+1,一直到等于POST的元素数量的时候中指。

然后,每执行一次$this->str[$o],调用一次POST过来的数组的数据,然后在进行for二次循环

对定义的过滤数组循环判断。直到所有的过滤数组都完成,跳出for二次循环

在判断一次循环的for条件(即POST的数组数量是否达),如果还有次数,对POST过来的数组的其他元素

以+1的方式,再一次进行二次for循环。直到一次循环完成。

*/

if($j>0) //只要有一条如果条件为真

{

echo “出现非法字符”;exit; //中止脚本。

}

}

}

}

}

$filtration=new Filtration(); //实例化对象。

?>

如果是用文件来过滤的话: 新增一个文件filtration.txt,写入要过滤的内容,以行为单位,然后PHP修改为:

header(“Content-Type:text/html;charset=utf-8”);

error_reporting( E_ALL&~E_NOTICE ); //除去 E_NOTICE 之外的所有错误信息

class Filtration

{

private $str=array();//私有数组成员,用于接收POST的数组

function filtration($arrayfiltration=array()) //过滤函数,带一个数组变量$arrayfiltration,

{

$this->str=$arrayfiltration; //函数的$arrayfiltration数组接收POST的数组传值给私有数组$str

$file=’filtration.txt’;//过滤文件

$openfile=file_get_contents($file); //执行打开文件并读入到字符串

$str1=explode(“\r\n”,$openfile); //获取数组”\r\n”表示是换行

$arraystr=count($this->str); //判断POST过来的数组有多少个元素

for($o=0;$o

{

for($i=0;$i

{

$j=substr_count($this->str[$o],$str1[$i]); //根据POST的数组元素数量执行$this->str和预定义的过滤数组$str1

if($j>0) //只要有一条如果条件为真

{

echo “出现非法字符”;exit; //中止脚本。

}

}

}

}

}

$filtration=new Filtration(); //实例化对象。

?>

如果是从文本读入,第一行请留空,否则第一行是无法过滤的.

如果是MYSQL里存放过滤数据的话,一样循环读入到数组

并且修改$str1的值=mysql里获取的数组数据.就可以进行判断了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值