php敏感字符串过滤_php过滤敏感字符类实例代码
所谓的敏感字符是指:在⽂章中含有不健康或反动类的信息,影响社会的信息,就会被视为敏感字符。因为有时候⽤户输⼊的敏感字符会⽆形中影响了程序的正确执⾏,著名的数据库注⼊攻击就是 在查询条件⾥⾯添加 数据库的控制指令,从⽽达到攻击者的⽬的。
这篇⽂章主要介绍了php表单敏感字符过滤类及其⽤法实例,详细分析了表单⽣成与提交等环节针对敏感字符的过滤功能,是⾮常实⽤的技巧,需要的朋友可以参考下,具体分析如下:/**
* 表单⽣成验证⽂件
*/
$_form = new formHtmlFind();
class formHtmlFind{
/**
* 输出表单函数
* $formKey 表单键
* $infoArray 更新时的原始信息数组
*/
public function formHtml($array,$infoArray='')
switch case判断字符串{
// 检测数组是否存在
if(emptyempty($array))return false;
$newform = null;
// 信息数组(更新信息)
$this->infoArray = !emptyempty($infoArray)?$infoArray:array();
$this->array['class'] = get_class_methods(get_class());
foreach ($array as $key =>$arr)
{
// 键值转换为纯英⽂
$key = preg_replace("/[^a-z]/i",'',$key);
// ⽣成表单
$newform .= $this->outputForm($arr,$key);
}
// 输出表单
return $newform.$this->jsError();
}
/**
* ⽣成表单函数
*/
private function outputForm($arr,$key)
{
$value = null;
if(emptyempty($arr))return false;
// input Type
$type = $key;
// input NAME
$name = trim($arr[0]);
// input 初始值 不包含多选,单选类
$value = (!emptyempty($this->infoArray[$name]))? trim($this->infoArray[$name]):trim($arr[1]); $value = emptyempty($this->post[$name])? $value :trim($this->post[$name]);
// input Title
$title = trim($arr[2]);
// 样式
$style = trim($arr[3]);
if($key!=="hidden")
{
$dt = "
{$title}";
// js错误提⽰
$dd = "
rn";
}
return (!preg_match("/checkbox|select|radio/i",$key))?
$dt.$this->newInput($type,$name,$value,$style,$title).$dd:
$this->formSelect($type,$name,$arr[1],$title,$style); // 多选类
}
/**
* 提交数据检测
*/
public function postForm($array)
{
/
/ 检测数组是否存在
if(emptyempty($array)||emptyempty($_POST))return false;
$this->post = $_POST;
$this->array['class'] = get_class_methods(get_class());
foreach ($array as $key =>$arr)
{
// 键值转换为纯英⽂
$key = preg_replace("/[^a-z]/i",'',$key);
// 检测 注销file类表单
if (!emptyempty($arr)&&'file' != $key)$newData[trim($arr[0])] = $this->postFind($arr,$key); }
// 输出表单
if(!emptyempty($this->error))
{
return false;
}
else return $newData;
}
/**
* ⽣成表单
*/
private function newInput($type,$name,$value,$style,$title)
{
switch ($type)
{
case 'text':
// 单⾏⽂本
return "";
break;
case 'password':
//密码输⼊
return "";
break;
case '':
/
/多⾏⽂本
return "{$value}";
break;
case 'hidden':
// 隐藏
return "";
break;
case 'file':
// ⽂件上传
return "";
break;
case 'submit':
// 提交
return "";
break;
default:
return "{$type}类型错误";
break;
}
}
/**
* 提交信息检测
* 错误返回error
*/
private function postFind($arr,$key)
{
if(emptyempty($arr))return false;
$name = $title =$error =$find =$standard =null; // input NAME
$name = trim($arr[0]);
// input Title
$title = trim($arr[2]);
// 错误提⽰
$error = trim($arr[4]);
/
/ 检测类型 Y N
$find = trim($arr[5]);
// 检测标准
$standard = trim($arr[6]);
//
if(!emptyempty($standard))$this->error .=$this->ck_split($standard,$name,$title,$find,$error); // 转换为字符串
if(is_array($this->post[$name]))$this->post[$name] = implode(",",$this->post[$name]);
// 转义或其他转化
$KKarray = array();
if(preg_match("/Y|N/is",$find))
{
$KKarray = split("_", $find);
// 转义或过滤
$escape_filter = (!emptyempty($KKarray[1]))?'ck_'.$KKarray[1]:'';
// 输出通过检测的合法数据
$data = ($escape_filter)?$this->$escape_filter($this->post[$name]):$this->post[$name];
}
else $data = "";
// 输出新的数据
return $data;
}
/**
* 多选类表单⽣成
*/
private function formSelect($type,$name,$value,$title,$style)
{
$outform = null;
// 触发更新和提交动作时的初始
$nowvalue = (!emptyempty($this->post[$name]))?$this->post[$name]:$this->infoarray[$name]; // 兼容多选的识别,转为数组
if(!emptyempty($nowvalue))$valueArray = explode(",",$nowvalue);
// 选项标题
if(is_array($title))
{
array_unshift($title,'选择');
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论