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

【温馨提示】源码包解压密码:www.youhutong.com

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

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

下面代码奉上!

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

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

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

* author: xiaochuan

* @access public

* @param  string $str 待转换字串

* @return string $str 处理后字串

*/

function str_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);

return explode('{YHT}', $newstr);

}else{

return strtr($str, $arr);

}

}

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

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

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

* author: xiaochuan

* @param: string $var 参数

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

* return: mixed

*/

function param($name, $check=false)

{

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

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

}else{

$var = $name;

}

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

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

}else if(input('?get.'.$var)){

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

}else if(input('?param.'.$var)){

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

}else{

$value = '';

}

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

return str_angle($value);

}

/**

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

* author: xiaochuan

* @param: string  $var   参数

* @param: boolean  $check   是否检测

* return: mixed

*/

function param($var, $check=false)

{

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

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

}else if(get_instance()->input->get($var)){

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

}else{

$value = '';

}

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

return str_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

*/

function check_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($rules as  $one){

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

}

if(!empty($needChars)){

if(is_array($value)){

foreach($value as $val){

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

if(!$res){

return false;

}

}

}else{

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

return false;

}

}

}

return true;

}

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

【温馨提示】源码包解压密码:www.youhutong.com

郑重声明:

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

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

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

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值