查询 3.9.1 安全
数据库注入是非常严重的安全隐患,在构建数据库查询语句时,应严防数据库注入。 所有的 mysql 关键字使用大写,如 SELECT WHERE 在执行数据库查询时,所有的数值类字段值一律使用 intval 函数进行预处理,在
查询字符 串中不允许使用’包含。 所有的字符型字段,使用
mysql_real_escape_string 进行预处理
sql 语句中使用单引号包含字符串类型的值 间接生成的查询条件或语句,也严格遵守以上规定!
3.9.2 效率
sql 的查询语句,where 字句,应尽量把区分度高的查询条件放在前列。例如: WHERE gid>0 AND login_time > xxxxx,应该 WHERE login_time > xxxxx AND gid>0 不明确的效率问题,咨询 dba
3.10 文件和目录
3.10.1 文件命名
文件名禁用中文。 文件名字母全部小写,用下划线分割前缀单词,用点号分割后缀单词。 前缀代表模块名、对象、操作,按照意义先大后小的顺序写,后缀代表代码所定义的类型。 除 URL 接口文件外,其他文件不得直接访问$_GET 或$_POST 变量 测试文件一律带 test 关键字,并随时可删除 参考后缀: .func.php //通用的函数库后缀 .class.php//类文件后缀 .inc.php//流程文件,通用包含文件后缀 .conf.php//配置文件后缀 html //smarty 模板
3.10.2 文件包含
包含路径禁止使用’./’和’../’开头的路径。 合理的包含路径如下: 同一个库或模块内的文件互相包含,使用相对路径,一下几种使用方法: 包含与自身文件在同一目录内的文件,直接包含文件名,例如: require_once(‘popup.fnc.php’); 包含自身所在目录的子目录的文件,使用子目录/文件名的方式,例如: require_once(‘config/config.inc.php’); 包含上层目录的文件,使用 dirname(__FILE__)开头的模式,例如: require_once(dirname(__FILE__).‘/../include/cache.class.php’) ; 前端展示文件包含库文件,不同模块间互相包含,一律通过全局目录常量开头的绝对路径 进行包含,例如: require_once(COMMON_PATH.’/includes/func.inc.php’); 除特殊情况,一律使用 require_once 或 include_once 包含文件。 流程性的文件,可以使用包含指令包含到页面里。见 example 2 include 指令用于包含可能存在的可选配置文件,前面加@消除报警信息。
禁止在函数中包含带有全局变量的文件(注意间接含有全局变量的文件,如无把握,不在 函数中包含任何文件) 。
3.10.3 目录结构
良好的目录结构,能够有效的对代码文件进行管理,对目录结构有暂时如下建议 每个模块使用单独的目录 模块的前端页面放到模块根目录下 smarty 模版文件放到 templates 目录,使用了 smarty 模板的模块,同时建立 templates_c 目 录 模块内部包含的文件,放到目录内的 include 文件夹 模块自身的配置,放到目录内的 config 文件夹 ajax 调用,放到目录内的
ajax 文件夹,不得放入公共 include 文件
3.11 Cookie 使用
目前存在的
问题是 cookie 的存取在代码中不统一,没有统一种到一个 domain 下,导致一 些 cookie 没 有 被 共享 ,包 括 session 的 cookie, 下 一 步 计 划在 公 共 代码 库 提 供 统 一的 set_cookie/get_cookie 函数和进行统一的设置。
3.12 代码重用
重复的代码会造成很多问题。 复制时没有修改对应部分造成逻辑错误 bug 很多,此类错误还非常难以检测; 由于代码大量复制,程序很难有良好的结构,难以进行单元测试; 含有大量重复代码的程序,非常难以对应用逻辑进行更改。 因此在编写代码时应
尽量消除重复代码。主要有一下规范: 实现相同功能的
程序(3 行以上)切勿在不同程序中多次出现 同一文件内也应尽量避免重复大段重复代码, 改头换面的不停出现,此时应封装成函数 进行调用。
3.13 注释 3.13.1 注释可以做什么 注释可以做什么<