摘要: 我们使用CodeIgniter 框架最主要是想利用其 MVC 特性,将模型、视图分开,并通过控制器进行统一控制。在尝试实现 MVC 模式之前,我们将实现其中一个对程序结构非常有用的技巧,就是 load_class 函数。在上一课中,我们用面向对象的方法大大简化了程序的结构,将主要工作放在两个类中进行 ,URI 和 Router 类。 但是在 Router 类的构造函数中为了获得 uri 的实例,我们使用了 global 关键字,如下所示:1 class CI_Router {2 ...3 function __construct() {4 global $URI... 阅读全文
posted @ 2013-07-11 00:25 风影无忌 阅读(5198) 评论(0) 推荐(0) 编辑
摘要: 前面两篇文章为了重点突出 CodeIgniter 框架的原理,程序的结构很乱,有很多全局变量,在这一课中我们采用面向对象的方法对原先代码进行重构。到目前为止,程序主要完成的就是 URL 分析,并根据配置文件进行路由转换,也就是说我们这里有两个对象,分别处理 URL 分析和路由转换。1. URL 分析URL 分析最主要的两个函数是 detect_uri 和 explode_uri ,考虑到 路由的需要,URL 类包含的成员变量有segments 数组 原始URL的分段信息rsegments 数组 经过路由后的分段信息uri_string URL的路径信息,也就是 index.php 之后的路径由 阅读全文
posted @ 2013-07-07 16:44 风影无忌 阅读(1648) 评论(0) 推荐(0) 编辑
摘要: 在上一课中,我们实现了简单的根据 URI 执行某个类的某个方法。但是这种映射没有扩展性,对于一个成熟易用的框架肯定是行不通的。那么,我们可以让 框架的用户 通过自定义这种转换来控制,用 CI 的术语就是 ”路由“。1. 路由具体负责做什么的? 举个例子,上一课中http://localhost/learn-ci/index.php/welcome/hello, 会执行 Welcome类的 hello 方法,但是用户可能会去想去执行一个叫 welcome 的函数,并传递 'hello' 为参数。 更实际一点的例子,比如你是一个产品展示网站, 你可能想要以如下 URI 的形式来展示 阅读全文
posted @ 2013-07-02 11:37 风影无忌 阅读(4424) 评论(0) 推荐(0) 编辑
摘要: CodeIgniter 框架最显著的特征就是 MVC 模式,它的做法就是提取 url 中的'分段', 映射到某个类的某个方法,从而由该方法来输出最终显示的页面内容。那么我们第一课中就是实现一个这样的原型框架。1. 新建 index.php 文件2. 提取 uri 1 /** 2 * -------------------------------------------------------------------- 3 * 获取 uri ,并通过 uri 调用相应的方法 4 * ------------------------------------------------- 阅读全文
posted @ 2013-06-27 21:32 风影无忌 阅读(3952) 评论(2) 推荐(1) 编辑
摘要: CodeIgniter 是一个非常轻量级的 PHP 框架,说是轻量级,最新版的代码只有不到2M。其最重要的特点就是 MVC 模式来编写代码,如果大家看过一些用 PHP 来编写网站的书籍或教程,无一例外都是那种很过程式,将程序逻辑和html代码混编的方式,这样很难写出优雅、可扩展的代码。废话不多说,学习优秀的开源程序能让我们代码水平有质的提高,希望能和大家一起学习进步。1. 思路按照自己的理解,要实现 CodeIgniter的框架,从最核心的开始,到逐步完善扩充到一个丰满的框架。2. 代码地址https://github.com/zhenyu-whu/learn-ci欢迎讨论拍砖~ 阅读全文
posted @ 2013-06-27 08:37 风影无忌 阅读(1248) 评论(0) 推荐(1) 编辑
摘要: 1. 问题描述 在做网络应用程序时,经常会有这样的情况产生,用户在前端操作过快时,会以较快的时间间隔向服务器发送请求,而服务器端会返回 JS 脚本更改客户端的状态,在这种情况下,服务器端返回的 JS 脚本会发生重叠,我们可能想如果在用户发送请求时判断前一次请求的结果是否已返回,如果没有返回,则取消掉前次的请求结果。2. 代码模拟 用户请求的 前台页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.d 阅读全文
posted @ 2013-03-26 12:20 风影无忌 阅读(333) 评论(0) 推荐(1) 编辑
摘要: CSS: CSS权威指南, CSS禅意花园Javascript:精通Javascript 阅读全文
posted @ 2012-12-22 15:54 风影无忌 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 相信搞前端开发的朋友们都遇到过这个问题,网上有很多讨论它的文章,但似乎都没有给出一个很完美的解决方案。本文试图用传统的递归offsetLeft,offsetTop的方法来获得元素的绝对坐标,并通过这个过程加深对DOM盒模型的理解,将其中易混淆的属性如offsetLeft,scrollLeft分辨开来。 1.支持的浏览器 针对目前的情况,支持ie6+, 以及firefox,chrome,opera,safari的最新版本(这里偷个懒,所以具体支持到什么版本没有测试,但是一般而言,国内使用这些浏览器的用户都会选择较新的版本,应该没有问题)。 2. 测试页面编写 测试页面有内嵌的CSS元... 阅读全文
posted @ 2012-12-06 23:41 风影无忌 阅读(3619) 评论(0) 推荐(0) 编辑
摘要: 如果以前没有接触过建站或网络编程,只是从头开始学PHP,以及用PHP来建立动态站点,那么会话(SESSION)对于初学者就有点难理解。那么到底什么是会话呢?理解一个概念需要从它产生的背景或问题出发,所以先回到它身处的Web环境以及它使用的HTTP协议。 HTTP是无状态协议,也就是说HTTP协议没有一个内建的机制来维护两个事务之间的状态。当一个用户在请求一个页面后再去请求另外一个页面时,HTTP将无法告诉我们这两个请求是来自同一个用户。由此我们就会觉得很奇怪了,平时我们在论坛逛帖子或电商网站购物时,只要我们在这个站点内,不论我们怎么跳转,从一个页面跑到另一个页面,网站总会记得我是谁,比如... 阅读全文
posted @ 2012-11-21 10:47 风影无忌 阅读(6308) 评论(0) 推荐(3) 编辑
摘要: 书中讨论了很多Web应用安全性的问题,因为其涉及的面很大很多,本文主要是对其中代码安全性做一个总结。代码的安全性的指导原则就是检查所有单个组件并且寻找如何改进其安全性的方法。1.过滤用户的输入 必须多虑所有来自外部的输入,包括单选、复选、select等,因为即使这些输入控件不像文本框那样可以让用户输入任意字符,但并不能妨碍某些用户直接连接到我们的Web服务器并且在表单中发送任意值。所以,针对用户的输入,更好的策略是验证提交值是否是期望值或允许值。比如性别Select有Male、Female、Other三个值的话,那么在脚本中就该这样去写:switch ($_POST['gender&# 阅读全文
posted @ 2012-11-18 09:45 风影无忌 阅读(680) 评论(0) 推荐(0) 编辑