输入值/表单提交参数过滤,防止sql注入或非法攻击的方法:

 代码如下:
/**
* 过滤sql与php文件操作的关键字
* @param string $string
* @return string
* @author zrp <zouruiping668@sina.com>
*/
private function filter_keyword( $string ) {
$keyword = select|insert|update|delete|\|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile;
$arr = explode( |, $keyword );
$result = str_ireplace( $arr, , $string );
return $result;
}

/** 
* 检查输入的数字是否合法,合法返回对应id,否则返回false 
* @param integer $id 
* @return mixed 
* @author zrp <zouruiping668@sina.com>  
*/

protected function check_id( $id ) {
$result = false;
if ( $id !== && !is_null( $id ) ) {
$var = $this->filter_keyword( $id ); // 过滤sql与php文件操作的关键字
if ( $var !== && !is_null( $var ) && is_numeric( $var ) ) {
$result = intval( $var );
}
}
return $result;
}

/** 
* 检查输入的字符是否合法,合法返回对应id,否则返回false 
* @param string $string 
* @return mixed 
* @author zrp <zouruiping668@sina.com> 
*/

protected function check_str( $string ) {
$result = false;
$var = $this->filter_keyword( $string ); // 过滤sql与php文件操作的关键字
if ( !empty( $var ) ) {
if ( !get_magic_quotes_gpc() ) { // 判断magic_quotes_gpc是否为打开
$var = addslashes( $string ); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤
}
//$var = str_replace( "_", "\_", $var ); // 把 _过滤掉
$var = str_replace( "%", "\%", $var ); // 把 %过滤掉
$var = nl2br( $var ); // 回车转换
$var = htmlspecialchars( $var ); // html标记转换
$result = $var;
}
return $result;
}

输入值/表单提交参数过滤,防止sql注入或非法攻击的方法:

代码如下:
/** 
* 过滤sql与php文件操作的关键字 
* @param string $string 
* @return string 
* @author zrp <zouruiping668@sina.com> 
*/

private function filter_keyword( $string ) {
$keyword = select|insert|update|delete|\|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile;
$arr = explode( |, $keyword );
$result = str_ireplace( $arr, , $string );
return $result;
}

/** 
* 检查输入的数字是否合法,合法返回对应id,否则返回false 
* @param integer $id 
* @return mixed 
* @author zrp <zouruiping668@sina.com>  
*/ 
protected function check_id( $id ) { 
$result = false; 
if ( $id !== && !is_null( $id ) ) { 
$var = $this->filter_keyword( $id ); // 过滤sql与php文件操作的关键字 
if ( $var !== && !is_null( $var ) && is_numeric( $var ) ) { 
$result = intval( $var ); 


return $result; 
}

/** 
* 检查输入的字符是否合法,合法返回对应id,否则返回false 
* @param string $string 
* @return mixed 
* @author zrp <zouruiping668@sina.com> 
*/

protected function check_str( $string ) {
$result = false;
$var = $this->filter_keyword( $string ); // 过滤sql与php文件操作的关键字
if ( !empty( $var ) ) {
if ( !get_magic_quotes_gpc() ) { // 判断magic_quotes_gpc是否为打开
$var = addslashes( $string ); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤
}
//$var = str_replace( "_", "\_", $var ); // 把 _过滤掉
$var = str_replace( "%", "\%", $var ); // 把 %过滤掉
$var = nl2br( $var ); // 回车转换
$var = htmlspecialchars( $var ); // html标记转换
$result = $var;
}
return $result;
}

输入值/表单提交参数过滤有效防止sql注入的方法的更多相关文章

  1. php+mysql 除了设置主键防止表单提交内容重复外的另一种方法

    感觉好久没有更新博客了,一直在做网站及后台,也没有遇到让我觉得可以整理的内容,之前做的一个系统,已经完成了,后来客户又要求加一个功能,大概就是表单提交的时候,约束有一项不能和以前的内容重复,如图 比如 ...

  2. 在表单提交之前做校验-利用jQuery的submit方法

    点击表单中的提交按钮,默认就会提交表单,如果要在表单提交之前做一些校验,那么就可以用jQuery的submit方法. 也就是jQuery的submit的方法执行顺序,在表单的提交之前.用法如下: $( ...

  3. Form 表单提交参数

    今天因为要额外提交参数数组性的参数给form传到后台而苦恼了半天,结果发现,只需要在form表单对应的字段html空间中定义name = 后台参数名 的属性就ok了. 后台本来是只有模型参数的,但是后 ...

  4. SpringMVC学习笔记:表单提交 参数的接收

    SpringMVC可以接收原生form表单和json格式数据 有一个名为Book的model,其中的属性如下: 字符串类型的name,数字类型的price,数组类型的cover,集合类型的author ...

  5. 360急速浏览器BUG,POST表单提交参数丢失

    p{text-indent:2em;} --> 今天我在做支付宝充值的时候发现在360急速浏览器下面业务处理页面获取Request.Form参数为空,一开始我还以为是自己参数没有传递过去.然后就 ...

  6. 模拟post表单提交参数

    Content-Type: application/x-www-form-urlencoded;charset=utf-8

  7. form表单提交参数封装

    function getFormValues(element,options) { var data = {}; if(element == null || element == undefined) ...

  8. thinkPHP form表单提交参数无法获取

    后台打印获取的数据为empty, 找了半天,是因为 input标签没有写name, 真是醉了!记一下,免得以后再犯错了.

  9. 关于使用 AJax 生成Form表单,且表单提交需要验证,验证实效的解决方法

    @Ajax.ActionLink("添加", "AddUser",new AjaxOptions() {InsertionMode = InsertionMod ...

随机推荐

  1. 【MyEcplise】新装系统,新装的myEcplise使用原来的workspace和maven库,项目没错但是引用的包不能正确找到

    项目中都是原来的正确的项目,但是有个感叹号 正确方法: 更新之后如果有别的问题,例如JDK版本变成原始版本等等,请在build path中调整. 并且修改 项目的编译JDK版本 右键项目propert ...

  2. linux让软件停止自动更新

     停止自动更新 sudo echo "软件包名 hold" | sudo dpkg --set-selections 比如我想给mysql-server锁定当前版本不更新,命令是: ...

  3. ES里关于数组的拓展

    一.静态方法 在ES6以前,创建数组的方式主要有两种,一种是调用Array构造函数,另一种是用数组字面量语法,这两种方法均需列举数组中的元素,功能非常受限.如果想将一个类数组对象(具有数值型索引和le ...

  4. 【Hive】Hive 基础

    Hive架构: Hive基础 1 概念 1.1 简介 1.1.1 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表, 并提供简单的sql查询功能,可以将sql语句 ...

  5. 使用Spring开发和监控线程池服务

    第1步:添加maven 项目 第2步:添加依赖库 将Spring的依赖添加到Maven的pom.xml文件中. 1 2 3 4 5 6 7 8 9 10 11 <!-- Spring 3 dep ...

  6. Angular 学习笔记——表单验证

    <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ...

  7. 2、cas4.0 单点登录 之 cas-client

    cas4.0 单点登录 之 cas-client cas4.0 单点登录 之 https证书已经做好了证书的准备工作.如今结合cas-server来配置单点登录: 一.安装cas服务端(cas-ser ...

  8. vs2012_error C2061: 语法错误: 标识符“uint64_t”

    加入头文件#include <stdint.h>

  9. 在PreferenceAcitity中使用Fragement时避免额外的Left和RightPadding

    On Android 4.4 遇到过这种问题: 注意到.上面的ActionBar部分的左右各有48像素的padding. 要了解该问题的成因,要首先了解其结构: 该页面的Activity是一个Pref ...

  10. 初探J2EE

    还记得在技术交流会上八期给我们讲的J2EE,当时就是云里来屋里去.留在自己脑子中的仅仅有两个字"规范",其他的真是一无全部. 可是如今学了后,又在脑子里留下了两个字"规范 ...