200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > php函数对入口参数做检查 (TP5框架)ThinkPHP5重写param函数方法(支持接收数组等)

php函数对入口参数做检查 (TP5框架)ThinkPHP5重写param函数方法(支持接收数组等)

时间:2021-05-24 09:22:59

相关推荐

php函数对入口参数做检查 (TP5框架)ThinkPHP5重写param函数方法(支持接收数组等)

【温馨提示】源码包解压密码:

把字符串中含有的全角字符.全部转换为半角字符.

如果可以的话最接收表单数据时.我们可以封装一个接收表单数据公用函数.然后直接在里面调用我们的全角转半角方法函数就行了.

下面代码奉上!

有问题可以留言交流.一起学习.

一:把字符串中含有全角的全部转换成对应半角字符方法代码:/**

*全角字符转换为半角字符

*author:xiaochuan

*@accesspublic

*@paramstring$str待转换字串

*@returnstring$str处理后字串

*/

functionstr_angle($str){

$arr=array(

'0'=>'0',

'1'=>'1',

'2'=>'2',

'3'=>'3',

'4'=>'4',

'5'=>'5',

'6'=>'6',

'7'=>'7',

'8'=>'8',

'9'=>'9',

'A'=>'A',

'B'=>'B',

'C'=>'C',

'D'=>'D',

'E'=>'E',

'F'=>'F',

'G'=>'G',

'H'=>'H',

'I'=>'I',

'J'=>'J',

'K'=>'K',

'L'=>'L',

'M'=>'M',

'N'=>'N',

'O'=>'O',

'P'=>'P',

'Q'=>'Q',

'R'=>'R',

'S'=>'S',

'T'=>'T',

'U'=>'U',

'V'=>'V',

'W'=>'W',

'X'=>'X',

'Y'=>'Y',

'Z'=>'Z',

'a'=>'a',

'b'=>'b',

'c'=>'c',

'd'=>'d',

'e'=>'e',

'f'=>'f',

'g'=>'g',

'h'=>'h',

'i'=>'i',

'j'=>'j',

'k'=>'k',

'l'=>'l',

'm'=>'m',

'n'=>'n',

'o'=>'o',

'p'=>'p',

'q'=>'q',

'r'=>'r',

's'=>'s',

't'=>'t',

'u'=>'u',

'v'=>'v',

'w'=>'w',

'x'=>'x',

'y'=>'y',

'z'=>'z',

'('=>'(',

')'=>')',

'['=>'[',

']'=>']',

'['=>'[',

']'=>']',

'['=>'[',

']'=>']',

'['=>'[',

'"'=>']',

'`'=>'[',

"'"=>']',

'{'=>'{',

'}'=>'}',

''=>'>',

'%'=>'%',

'+'=>'+',

'-'=>'-',

'-'=>'-',

'-'=>'-',

':'=>':',

'.'=>'.',

'.'=>',',

'.'=>'.',

'.'=>'.',

','=>',',

'?'=>'?',

'!'=>'!',

'-'=>'-',

'|'=>'|',

'"'=>'"',

"'"=>'`',

'`'=>'`',

'|'=>'|',

'"'=>'"',

''=>''

);

if(is_array($str)){

$str=implode('{YHT}',$str);

$newstr=strtr($str,$arr);

returnexplode('{YHT}',$newstr);

}else{

returnstrtr($str,$arr);

}

}

二:为了方便.接收POST.GET数据.我直接封装了一个公共函数.以后需要接收数据时就可 直接调用这个函数了.好处是.有什么验证规则等等.后期都可直接在这个函数中处理了.

下面是我封装的一处理表单数据的一个公共函数(TP5的)./**

*正确获取参数(适用用THINKPHP5.0框架)

*author:xiaochuan

*@param:string$var参数

*@param:boolean$check是否开启常规安全检测

*return:mixed

*/

functionparam($name,$check=false)

{

if(strpos($name,'/')){

list($var,$key)=explode('/',$name);

}else{

$var=$name;

}

if(input('?post.'.$var)){

$value=input('post.'.$name);

}elseif(input('?get.'.$var)){

$value=input('get.'.$name);

}elseif(input('?param.'.$var)){

$value=input('param.'.$name);

}else{

$value='';

}

if($check&&!check_param($value))exception('非法参数');

returnstr_angle($value);

}

/**

*正确获取参数(适用用CI框架)

*author:xiaochuan

*@param:string$var参数

*@param:boolean$check是否检测

*return:mixed

*/

functionparam($var,$check=false)

{

if(get_instance()->input->post($var)){

$value=get_instance()->input->post($var);

}elseif(get_instance()->input->get($var)){

$value=get_instance()->input->get($var);

}else{

$value='';

}

if($check&&!check_param($value))exception('非法参数');

returnstr_angle($value);

}

这样的话.我们需要全角转半角时.就不需要满页面调用str_angle();

函数了.直在刚接收POST.GET数据的函数里调用一次就行了.

说明:

input('post.'.$var);和 get_instance()->input->post($var);

其实跟我们原生$_POST['name']是一样的.

其他的可以自己去封一下.

TP5中使用上面的param时,如果接收数据什么的跟tp5里的input一样也是可以加修饰附的。

如接收数组时,可加:/a修饰附。

另外附上check_param参数检测函数方法:/**

*参数安全判断

*@param:mixed$value参数值

*@param:array$rules检测规则

*return:boolean

*/

functioncheck_param($value,$rules=''){

$rules=empty($rules)?[1,2]:$rules;

//检测规则

static$chars=[

1=>"select|delete|update|insert|union|into|load_file|outfile",

2=>"\'|\*|\\|\\$|\.\/",

3=>"\'|\/|\*|\\|\\$|\.\/",

4=>"\.",

];

$needChars=[];

foreach($rulesas$one){

if(isset($chars[$one]))$needChars[]=$chars[$one];

}

if(!empty($needChars)){

if(is_array($value)){

foreach($valueas$val){

$res=check_param($val,$rules);

if(!$res){

returnfalse;

}

}

}else{

if(preg_match("/".implode("|",$needChars)."/i",$value)){

returnfalse;

}

}

}

returntrue;

}

浏览器启用弹出窗口过滤功能,将无法跳转到下载页。在浏览器地址栏右边符号提示处点击允许就可以了!

【温馨提示】源码包解压密码:

郑重声明:

1、本站源码仅供个人学习研究和交流使用,请于下载后二十四小时内删除

2、本站大多资源来源于互联网、用户分享,仅供学习交流使用,本站不提供任何技术支持

3、本站联系方式Email:admin@ ,收到邮件会第一时间处理。

4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意

php函数对入口参数做检查 (TP5框架)ThinkPHP5重写param函数方法(支持接收数组等) 并对参数安全检测 并全角字符转半角字符。...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。