PHP CodeIgniter学习笔记详解

(中文官网:http://www.bootcss.com)好的东西大家都喜欢,但是它对IE6-9的兼容几乎是0。大家也懂的,国外基本是不使用这几款浏览器了。不过在中国,IE依然占有很高的市场份额。所以,有人开发了一款叫做BSIE的Bootstrap插件,美其名曰鄙视IE,使用方法也相当简单。好像有点跑题,后端我用的是CodeIgniter,它是基于PHP的开源框架。CI是今天的正题。

 

  因为CI对于数据的过滤函数只有xss_clean(),(不知道是不是自己才疏学浅,总之没有找到其他的过滤函数)而今天的项目涉及到接收用户数据,然后提交数据库的操作。没有针对SQL语句的过滤,使得这一操作变得很危险。有点蛋蛋的忧桑,我想到的方法是改写CI的xss_clean()函数,使之具备过滤SQL注入语句的功能;一来改起来方便,二来过滤数据的时候不用嵌套两个函数。说干就干,在CI/system/core/目录下找到secure.php文件,找到xss_clean()函数的申明位置,在最后加上这么一段东西。

PHP代码

 代码如下 复制代码
$str = str_replace("_","x",$str);    
$str = str_replace("%","x",$str);    
$str = str_replace(""","x",$str);    
$str = str_replace("'","x",$str);    
$str = str_replace("select","x",$str);    
$str = str_replace("update","x",$str);    
$str = str_replace("insert","x",$str);   
$str = str_replace("set","x",$str);   
$str = str_replace("where","x",$str);   
$str = str_replace("from","x",$str);   
$str = str_replace("alert","x",$str);    
$str = str_replace("like","x",$str);   
return $str;  

 

  这样差不多能避免一般的SQL注入了。

时间: 2024-10-28 14:27:10

PHP CodeIgniter学习笔记详解的相关文章

oracle 创建job学习笔记详解

一:简单测试job的创建过程案例: 1,先创建一张JOB_TEST表,字段为a 日期格式  代码如下 复制代码 SQL> create table JOB_TEST(a date); Table created SQL> commit; Commit complete 2,创建一个存储过程 bb 作用是往pig表中插入数据  代码如下 复制代码 SQL> create or replace procedure JOB_PRO_TEST as   2  begin   3  insert

Angular2学习笔记——详解NgModule模块_AngularJS

在Angular2中一个Module指的是使用@NgModule修饰的class.@NgModule利用一个元数据对象来告诉Angular如何去编译和运行代码.一个模块内部可以包含组件.指令.管道,并且可以将它们的访问权限声明为公有,以使外部模块的组件可以访问和使用到它们. 模块是用来组织应用的,通过模块机制外部类库可以很方便的扩展应用,Rc5之后,Angular2将许多常用功能都分配到一个个的模块中,如:FormModule.HttpModule.RouterModule. NgModule的

Angular2学习笔记——详解路由器模型(Router)_AngularJS

Angular2以组件化的视角来看待web应用,使用Angular2开发的web应用,就是一棵组件树.组件大致分为两类:一类是如list.table这种通放之四海而皆准的通用组件,一类是专为业务开发的业务组件.实际开发中大部分时间我们都需要处理业务组件.对于SPA应用来说,一个通用的问题就是如何控制页面的切换,解决这个问题的通用方法就是利用路由器来实现. 路由配置 现在我们先撇开Angular2来看看通用的路由器模型.通常来讲SPA应用需要路由配置信息: [ { path: '', pathMa

mysql 全文索引学习笔记详解

场景:需要做一个关于标题的模糊查询,只是记录有点多,而且需要相对精确,比如搜索:ac, 不能出现abc,可以接受acb,bac,之类. mysql全文搜索有三种模式: 一.自然语言查找.这是mysql默认的全文搜索方式,sql示例: [code=plain]  代码如下 复制代码 select  id,title FROM post WHERE MATCH(content) AGAINST ('search keyword') 或者显式声明使用自然语言搜索方式 [code=plain]  代码如

Javascript学习笔记-详解in运算符_javascript技巧

一.判断 语法 prop in objectName 如果objectName指向的对象中含有prop这个属性或者键值,in运算符会返回true. 复制代码 代码如下: var arr = ['one','two','three','four']; arr.five = '5'; 0 in arr;//true 'one' in arr; //false,只可判断数组的键值 'five' in arr;//true,'five'是arr对象的属性 'length' in arr;//true 原

PHP单例模式学习笔记详解

1.单例模式的概念 顾名思义,单例模式只有一个实例,而且自行实例化,向全局提供这个实例.需要强调的是,单例模式 确保某个类只能有一个实例! 2.单例模式的三个要点 (1)需要一个静态变量来保存类的唯一实例  代码如下 复制代码 private static $_instance; (2)构造函数和克隆函数必须为私有的,防止用户创建对象和复制实例对象  代码如下 复制代码 private function __construct() { //私有化默认构造方法,防止外界直接实例化 } privat

JavaScript数据类型学习笔记详解

这里仅讲解5中简单数据类型,Function 和 Object 将在后续章节中讲解. 种基本数据类型 Number 数字类型 String 字符串类型 Boolean 布尔类型 Undefined 表示一个变量未被赋值 Null 空的对象 Number类型 Number 类型用来表示整数和浮点数.例如: var x=100;Number 类型还有一个特殊值 NaN(非数值 Not a Number). NaN 用于表示一个本来要返回数值的操作并未返回数值,这样就不会抛出错误了. String类型

JavaScript匿名函数学习笔记详解

匿名函数,是指没有名称的函数.匿名函数可以传递参数,也可以赋值给一个变量. 在JavaScript中,有两种传值方式,按值传递和引用传递:     按值传递:赋值时是将数据本身传递给变量.     引用传递:将数据(代码块)的地址传递给变量,而不是数据(代码块)本身. 基本数据类型一般是按值传递,复杂数据类型一般是引用传递. 另一种定义函数的方式 来分析一个函数的定义:  代码如下 复制代码     function demo(){     // 函数主体部分     } 它的实质,是将函数主体

xampp启用xdebug学习笔记详解

今天早上弄xdebug折腾了有一会,记录一下,以后好找. 环境:  代码如下 复制代码 Windows 7 Business Edition Service Pack 1(64位) XAMPP v3.2.1 这个版本的XAMPP,自带的php_debug.dll模块启用不了,总是报错,就去xdebug.org下载. 试了好几个版本才找到能用的 下好之后,一个个试,有的报错无法运行,有的不报错,但是phpinfo()里面没有显示已经加载了xdebug. 只有php_xdebug-2.2.3-5.4