【温馨提示】源码包解压密码:
把字符串中含有的全角字符.全部转换为半角字符.
如果可以的话最接收表单数据时.我们可以封装一个接收表单数据公用函数.然后直接在里面调用我们的全角转半角方法函数就行了.
下面代码奉上!
有问题可以留言交流.一起学习.
一:把字符串中含有全角的全部转换成对应半角字符方法代码:/**
*全角字符转换为半角字符
*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函数方法(支持接收数组等) 并对参数安全检测 并全角字符转半角字符。...