六、PHP如何防止注入及开发安全_第1页
六、PHP如何防止注入及开发安全_第2页
六、PHP如何防止注入及开发安全_第3页
六、PHP如何防止注入及开发安全_第4页
六、PHP如何防止注入及开发安全_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1学习重点学习重点1、PHP注入的基本原理注入的基本原理2、防止注入的几种办法、防止注入的几种办法3、PHP其他地方安全设置其他地方安全设置PHP如何防止注入及开发安全如何防止注入及开发安全2PHP如何防止注入及开发安全如何防止注入及开发安全1、PHP注入的基本原理注入的基本原理 程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的

2、结果,获得某些他想得知的数据,这就是所谓的库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即,即SQL注入。注入。 受影响的系统:对输入的参数不进行检查和过滤的系统受影响的系统:对输入的参数不进行检查和过滤的系统 SQL注入过程注入过程 正常来讲,我们通过地址接收一些必要的参数如:正常来讲,我们通过地址接收一些必要的参数如: PHP100.php?id=2 页面中我们会使用页面中我们会使用 2 写入到写入到SQL语句中语句中 正常情况:正常情况:Select * From Table where id=2如果我们对如果我们对SQL语句熟悉,就知道

3、语句熟悉,就知道2 我们可以替换成我们需要的我们可以替换成我们需要的SQL语句语句如:如:and exists (select id from admin) 3PHP如何防止注入及开发安全如何防止注入及开发安全2、防止注入的几种办法、防止注入的几种办法其实原来就是我们需要过滤一些我们常见的关键字和符合如:其实原来就是我们需要过滤一些我们常见的关键字和符合如:Select,insert,update,delete,and,*,等等,等等 function inject_check($sql_str) return eregi(select|insert|update|delete|/*|*|./

4、|./|union|into|load_file|outfile, $sql_str); / 进行过滤进行过滤例子例子或者是通过系统函数间的过滤特殊符号或者是通过系统函数间的过滤特殊符号Addslashes(需要被过滤的内容)(需要被过滤的内容)4PHP如何防止注入及开发安全如何防止注入及开发安全3、PHP其他地方安全设置其他地方安全设置1、register_globals = Off 设置为关闭状态设置为关闭状态2、SQL语句书写时尽量不要省略小引号和单引号语句书写时尽量不要省略小引号和单引号Select * From Table Where id=2 (不规范不规范)Select * Fr

5、om Table Where id=2 (规范规范)3、正确的使用、正确的使用 $_POST $_GET $_SESSION 等接受参数,并加以过滤等接受参数,并加以过滤4、提高数据库命名技巧,对于一些重要的字段可根据程序特点命名、提高数据库命名技巧,对于一些重要的字段可根据程序特点命名5、对于常用方法加以封装,避免直接暴露、对于常用方法加以封装,避免直接暴露SQL语句语句5学习重点学习重点1、mod_rewrite 简介简介和和配置配置2、mod_rewrite 规则规则的使用的使用3、mod_rewrite 规则规则修正修正符符Apache Rewrite 拟静态配置拟静态配置6Apach

6、e Rewrite 拟静态配置拟静态配置1、mod_rewrite 简介简介和和配置配置Rewirte主要的功能就是实现主要的功能就是实现URL的跳转和隐藏真实地址,基于的跳转和隐藏真实地址,基于Perl语言的正则语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等如一个普通访问地址为如一个普通访问地址为 */php100.php?id=2可以转成:可以转成: */PHP100_2.html或转成:或转成: */PHP100_2/Apache配置:配置:支持支持httpd.conf 配置和目录配置和目录 .h

7、taccess配置配置启用启用rewrite# LoadModule rewrite_module modules/mod_rewrite.so去除前面的去除前面的 #LoadModule rewrite_module modules/mod_rewrite.so启用启用.htaccessAllowOverride None 修改为:修改为: AllowOverride All7Apache Rewrite 拟静态配置拟静态配置2、mod_rewrite 规则规则的使用的使用RewriteEngine onRewriteCond %HTTP_HOST ! NC RewriteRule /(.*

8、) L启动启动rewrite引擎引擎判断主机判断主机跳转到跳转到RewriteEngine onRewriteRule /test(0-9*).html$ /test.php?id=$1 RewriteRule /new(0-9*)/$ /new.php?id=$1 R启动启动rewrite引擎引擎跳转到跳转到8Apache Rewrite 拟静态配置拟静态配置3、mod_rewrite 规则规则修正修正符符1) R 强制外部重定向强制外部重定向2) F 禁用禁用URL,返回返回403HTTP状态码。状态码。3) G 强制强制URL为为GONE,返回,返回410HTTP状态码。状态码。4) P

9、 强制使用代理转发。强制使用代理转发。5) L 表明当前规则是最后一条规则,停止分析以后规则的重写。表明当前规则是最后一条规则,停止分析以后规则的重写。6) N 重新从第一条规则开始运行重写过程。重新从第一条规则开始运行重写过程。7) C 与下一条规则关联与下一条规则关联如果规则匹配则正常处理,以下修正符无效如果规则匹配则正常处理,以下修正符无效8) T=MIME-type(force MIME type) 强制强制MIME类型类型9) NS 只用于不是内部子请求只用于不是内部子请求10) NC 不区分大小写不区分大小写11) QSA 追加请求字符串追加请求字符串12) NE 不在输出转义特殊

10、字符不在输出转义特殊字符 %3d$1 等价于等价于 =$19学习重点学习重点1、PDO 简介简介 和和 配置配置2、PDO 如何连接如何连接 MYSQL3、PDO 常用方法及其使用常用方法及其使用PHP5中使用中使用PDO连接数据库连接数据库10PHP5中使用中使用PDO连接数据库连接数据库1、PDO 简介简介 和和 配置配置PDO(PHP Data Object) 是是PHP 5 中加入的东西,是中加入的东西,是PHP 5新加入的一个重大功能,因为在新加入的一个重大功能,因为在PHP 5以前的以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么都是一堆的数据库扩展来跟

11、各个数据库的连接和处理,什么 php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等等等PHP6中也将默认使用中也将默认使用PDO的方式连接,的方式连接,mysql扩展将被作为辅助扩展将被作为辅助PHP.iniextension=php_pdo.dllextension=php_pdo_mysql.dllextension=php_pdo_pgsql.dllextension=php_pdo_sqlite.dllextension=php_pdo_mssql.dllextension=php_pdo_odbc.dllextensio

12、n=php_pdo_firebird.dll 重启重启web选择需要启用的选择需要启用的PDO去除前面的去除前面的#11new PDO(“连接信息连接信息”, root, , array(PDO:ATTR_PERSISTENT = true);PHP5中使用中使用PDO连接数据库连接数据库2、PDO 如何连接如何连接new PDO(mysql:host=localhost;dbname=php100,root, “ );数据库类型数据库类型连接主机连接主机连接的数据库连接的数据库用户和密码用户和密码默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:默认这个不是长连接,如果需要数据库

13、长连接,需要最后加一个参数:array(PDO:ATTR_PERSISTENT = true) 变成这样:变成这样:12PHP5中使用中使用PDO连接数据库连接数据库3、PDO 常用方法及其使用常用方法及其使用PDO:query() 主要是用于有记录结果返回的操作,特别是主要是用于有记录结果返回的操作,特别是SELECT操作操作PDO:exec() 主要是针对没有结果集合返回的操作,如主要是针对没有结果集合返回的操作,如INSERT、UPDATE等操作等操作PDO:lastInsertId() 返回上次插入操作,主键列类型是自增的最后的自增返回上次插入操作,主键列类型是自增的最后的自增ID P

14、DOStatement:fetch() 是用来获取一条记录是用来获取一条记录 PDOStatement:fetchAll() 是获取所有记录集到一个中是获取所有记录集到一个中 $rs = $db-query(SELECT * FROM PHP100); while($row = $rs-fetch() print_r($row); 例例13学习重点学习重点1、制作、制作PHP安装程序的原理和步骤安装程序的原理和步骤2、制作安装用到的、制作安装用到的PHP函数函数3、制作安装的注意事项、制作安装的注意事项制作制作PHP安装程序的原理和步骤安装程序的原理和步骤14制作制作PHP安装程序的原理和步骤

15、安装程序的原理和步骤1、制作、制作PHP安装程序的原理和步骤安装程序的原理和步骤检查目录或检查目录或文件的权限文件的权限修改或修改或填加配置文件填加配置文件检查配置检查配置文件正确性文件正确性导入数据库导入数据库锁定或删除锁定或删除安装文件安装文件原理:原理: 其实其实PHP程序的安装原理无非就是将数据库结构和程序的安装原理无非就是将数据库结构和内容导入到相应的数据库中,从这个过程中重新配置内容导入到相应的数据库中,从这个过程中重新配置连接数据库的参数和文件,为了保证不被别人恶意使连接数据库的参数和文件,为了保证不被别人恶意使用安装文件,当安装完成后需要修改安装文件。用安装文件,当安装完成后需

16、要修改安装文件。15制作制作PHP安装程序的原理和步骤安装程序的原理和步骤2、制作安装用到的、制作安装用到的PHP函数函数is_writable() 检查文件是否可写,用来判断文件权限,检查文件是否可写,用来判断文件权限,同类函数还有同类函数还有is_readable() 检查文件是否可读,返回布尔值检查文件是否可读,返回布尔值is_writable(“data/config.php”);fopen () 文件操作函数,打开一个文件或新建文件操作函数,打开一个文件或新建fwrite () 文件操作函数,写入内容到文件文件操作函数,写入内容到文件rename() 文件操作函数,给文件改名文件操作

17、函数,给文件改名16制作制作PHP安装程序的原理和步骤安装程序的原理和步骤3、制作安装的注意事项、制作安装的注意事项1、对文件权限进行检查和相关文件夹,如缓存,生成文件,配置文件、对文件权限进行检查和相关文件夹,如缓存,生成文件,配置文件2、安装文件尽可能独立,可删除,可改名。、安装文件尽可能独立,可删除,可改名。3、数据库导入时,需检查:、数据库导入时,需检查: a、检查是否有建立数据库的权限、检查是否有建立数据库的权限 b、是否同名数据库的存在、是否同名数据库的存在 c、考虑到数据库导入的大小是否分段处理、考虑到数据库导入的大小是否分段处理4、检查配置环境,各种模块的支持情况,如:、检查配

18、置环境,各种模块的支持情况,如:gd2, pdo,rewirte等等17学习重点学习重点1、PHP备份数据库的原理备份数据库的原理2、PHP中中mysql相关函数相关函数3、备份时候的注意事项、备份时候的注意事项PHP备份数据库的原理和方法备份数据库的原理和方法18PHP备份数据库的原理和方法备份数据库的原理和方法1、PHP备份数据库的原理备份数据库的原理查找所有表查找所有表查找所有字段查找所有字段查找所有数据查找所有数据生成生成SQL需要列出所有字段名,需要列出所有字段名,字段类型等相关信息字段类型等相关信息读取数据出来注意读取数据出来注意特殊符号的转换特殊符号的转换addslashes()

19、把数据格式化把数据格式化生成对应的生成对应的SQL通过相关函数输出通过相关函数输出SQL相关信息,并格式化后生成文件,保存!相关信息,并格式化后生成文件,保存!19PHP备份数据库的原理和方法备份数据库的原理和方法2、PHP中中mysql相关函数相关函数mysql_list_tables() 表查询函数,类似表查询函数,类似mysql_query() 函数函数mysql_fetch_field() 字段信息函数,返回句柄字段信息函数,返回句柄Name 字段的名称字段的名称Table 字段所属数据表的名称字段所属数据表的名称Type 字段的类型字段的类型max_length 字段的最大长度字段的

20、最大长度not_null 字段是否不能为空,是,则这一项的值为字段是否不能为空,是,则这一项的值为1primary_key 字段是否为主键,是,则这一项的值为字段是否为主键,是,则这一项的值为1unique_key 字段是否为字段是否为unique键,是,则这一项的值为键,是,则这一项的值为1multiple_key 字段是否不为字段是否不为unique键,是,则这一项的值为键,是,则这一项的值为1Numeric 字段是否为数字型,是,则这一项的值为字段是否为数字型,是,则这一项的值为1Blob 字段是否为字段是否为blob型,是,则这一项的值为型,是,则这一项的值为1Unsigned 数字型

21、的字段是否为数字型的字段是否为unsigned的,是,则这一项的值为的,是,则这一项的值为1Zerofill 数字型的字段是否为数字型的字段是否为zerofilled的,是,则这一项的值为的,是,则这一项的值为120PHP备份数据库的原理和方法备份数据库的原理和方法CREATE TABLE help_category ( help_category_id int(5) unsigned NOT NULL, name char(64) NOT NULL)3、备份时候的注意事项、备份时候的注意事项 例子:例子:1、注意数据库的大小,过大或者过多的表分段处理、注意数据库的大小,过大或者过多的表分段处

22、理2、生成的、生成的SQL文件名或者存放不易被猜到文件名或者存放不易被猜到3、备份生成文件可以表或者自动为单位保存、备份生成文件可以表或者自动为单位保存4、可以使用、可以使用ZIP组件压缩生成的文件以便保持组件压缩生成的文件以便保持21学习重点学习重点1、企业网站都有哪些基本功能、企业网站都有哪些基本功能2、如何写企业网站评估报告、如何写企业网站评估报告3、神奇的、神奇的BIWEB积木式建站系统积木式建站系统快速设计一个企业网站之快速设计一个企业网站之BIWEB22快速设计一个企业网站之快速设计一个企业网站之BIWEB企企业业网网站站单页发布程序单页发布程序新闻发布新闻发布针对一些企业简介、联

23、系方式、荣誉等针对一些企业简介、联系方式、荣誉等无需分页,只需单页发布即可无需分页,只需单页发布即可支持自定义分类,新闻发布需要支持图片上传、后台排版、关键等内容支持自定义分类,新闻发布需要支持图片上传、后台排版、关键等内容产品展示产品展示支持自定义分类,多图上传,介绍,单价等相关字段支持自定义分类,多图上传,介绍,单价等相关字段订单功能订单功能对于产品展示或商品出售等做订单后台统计功能对于产品展示或商品出售等做订单后台统计功能留言反馈留言反馈一个企业网站必须的功能一个企业网站必须的功能其他:搜索,后台管理,会员管理,采集,生成静态,其他:搜索,后台管理,会员管理,采集,生成静态,SEO优化等

24、优化等1、企业网站都有哪些基本功能、企业网站都有哪些基本功能23快速设计一个企业网站之快速设计一个企业网站之BIWEB2、如何写企业网站评估报告、如何写企业网站评估报告一个专业的评估报告一个专业的评估报告对你能否接下单子很重要对你能否接下单子很重要描述模块描述模块根据需求根据需求根据地区和个人团队情况填写根据地区和个人团队情况填写24快速设计一个企业网站之快速设计一个企业网站之BIWEB3、神奇的、神奇的BIWEB积木式建站系统积木式建站系统BIWEB 网务通商务智能网站系统,设计初衷就是应用于高负载大流量的大型网务通商务智能网站系统,设计初衷就是应用于高负载大流量的大型web项目,其结构灵活

25、多变,项目,其结构灵活多变,可以非常方便的做到分压、分流和负载均衡,是可以非常方便的做到分压、分流和负载均衡,是web项目首选的建站系统。通过项目首选的建站系统。通过BIWEB ,可以方便的搭,可以方便的搭建自己想要的各种建自己想要的各种web应用,并可在投入最小的硬件成本下负载最大的流量,做到性价比最高。应用,并可在投入最小的硬件成本下负载最大的流量,做到性价比最高。特点:特点: 1、非传统的企业网站源码,他是提供建站底层模块、非传统的企业网站源码,他是提供建站底层模块 2、完善的底层框架,可以为开发节省前期很多准备工作、完善的底层框架,可以为开发节省前期很多准备工作 3、添加栏目只需要替换

26、修改即可完成、添加栏目只需要替换修改即可完成 4、支持多种缓存机制,提高网站系统的速度、支持多种缓存机制,提高网站系统的速度 5、提供了各类的户外接口,、提供了各类的户外接口,GGsitemap 等等让我们来体验演示一下吧让我们来体验演示一下吧25学习内容学习内容1、BIWEB的使用常见问题解答的使用常见问题解答2、BIWEB目录结构和数据库分析目录结构和数据库分析3、栏目如何更加独立和使用自定义内容、栏目如何更加独立和使用自定义内容4、从、从BIWEB我们学到了什么我们学到了什么关于关于BIWEB常见问题和结构分析常见问题和结构分析26关于关于BIWEB常见问题和结构分析常见问题和结构分析1

27、、BIWEB的使用常见问题解答的使用常见问题解答(1)为什么安装时白页或出错?)为什么安装时白页或出错? 答:是否开启了答:是否开启了PDO和和PDO_Mysql 模块,还有的时候二次安装导致模块,还有的时候二次安装导致(2)为什么修改了文件后会乱码?)为什么修改了文件后会乱码? 答:因为答:因为BIWEB全站使用的是全站使用的是UFT8模式,所以如果直接使用记事本打开修模式,所以如果直接使用记事本打开修 改会导致编码错误,大家可以使用改会导致编码错误,大家可以使用EditPlus 或其他的编译工具。或其他的编译工具。 (3)为什么我增加了新的模块后导航却没有?)为什么我增加了新的模块后导航却

28、没有? 答答: 这是因为这是因为BIWEB的导航暂时还不是智能出现的,需要手工增加的导航暂时还不是智能出现的,需要手工增加 (4)BIWEB是否适合英文网站的开发和支持是否适合英文网站的开发和支持PHP5.3? 答:同上面所说,因为答:同上面所说,因为BIWEB使用的是使用的是UTF8编码所以开发英文网站老外看编码所以开发英文网站老外看 是没有问题的,新版的是没有问题的,新版的BIWEB支持支持PHP5.3。27关于关于BIWEB常见问题和结构分析常见问题和结构分析2、BIWEB目录结构和数据库分析目录结构和数据库分析红色红色目录代表系统框架重要目录,目录代表系统框架重要目录,紫色紫色目录代表

29、功能栏目目录,目录代表功能栏目目录,黑色目录代表系统使用目录。黑色目录代表系统使用目录。红色目录中红色目录中,主要看整站配置文件目录和整站,主要看整站配置文件目录和整站可控配置文件目录,重点记住可控配置文件目录,重点记住BIWEB系统中重系统中重要的配置数组,系统公共配置数组都是要的配置数组,系统公共配置数组都是arrG开开头的,栏目配置数组以头的,栏目配置数组以arrM开头的。开头的。紫色目录中紫色目录中,重点看新闻栏目,理解新闻栏目,重点看新闻栏目,理解新闻栏目中的配置和程序关系。中的配置和程序关系。黑色目录中黑色目录中,全部不用看,都是系统自用目录。,全部不用看,都是系统自用目录。数据库

30、一句话概括:数据库一句话概括: 前缀前缀_模块名模块名 如如 : PHP100_news一个模块对应一张表很容易找到一个模块对应一张表很容易找到 28关于关于BIWEB常见问题和结构分析常见问题和结构分析3、栏目如何更加独立和使用自定义内容、栏目如何更加独立和使用自定义内容其实每个模块都可以自定义数据库,独立配置一些参数。这样使每个栏目更加独立其实每个模块都可以自定义数据库,独立配置一些参数。这样使每个栏目更加独立常见的配置文件在模块下面的常见的配置文件在模块下面的config目录下面:目录下面:var.inc.php 一般配置数据库信息一般配置数据库信息type.inc.php 一般配置分类

31、信息,以数组的形式存在一般配置分类信息,以数组的形式存在private.inc.php 一般改模块的私有变量信息都在这里,如一般改模块的私有变量信息都在这里,如smarty 、分页等、分页等config.inc.php 一般是模块中需要调用的文件或内容一般是模块中需要调用的文件或内容4、从、从BIWEB我们学到了什么我们学到了什么俗话说见多识广,虽然这个程序不能说是完美的程序,但从结构和代码的规范俗话说见多识广,虽然这个程序不能说是完美的程序,但从结构和代码的规范程度是值得我们学习的,尤其是在扩展性上。初学者写全站可能考虑不到这么大程度是值得我们学习的,尤其是在扩展性上。初学者写全站可能考虑不

32、到这么大的扩展型,但要知道这是完全可以实现的,所以这也是我们写程序的方向。的扩展型,但要知道这是完全可以实现的,所以这也是我们写程序的方向。下面的课我讲一些开发中常用的规范。下面的课我讲一些开发中常用的规范。29开发规范开发规范1、PHP中对各类变量内容的命名规范中对各类变量内容的命名规范2、PHP中函数、符号、运算写作规范中函数、符号、运算写作规范3、PHP中各类注释规范中各类注释规范4、数据库设计与操作规范、数据库设计与操作规范PHP与数据库代码开发规范与数据库代码开发规范30PHP与数据库代码开发规范与数据库代码开发规范1、PHP中对各类变量内容的命名规范中对各类变量内容的命名规范(1)

33、目录命名、文件命名、局部变量命名:)目录命名、文件命名、局部变量命名:使用英文名词、动词,以下划线作为单词的分隔,所有字母均使用小写使用英文名词、动词,以下划线作为单词的分隔,所有字母均使用小写目录:目录:upload、templates、install、manage文件:文件:index.php 、 register.php 、 config.php变量:变量:$user , $pay_time , $pay_del_cont (2)全局常量命名:)全局常量命名:使用英文名词、动词,所有字母都使用大写,以下划线分隔每个单词使用英文名词、动词,所有字母都使用大写,以下划线分隔每个单词defin

34、e( WEBSITE_NAME, 名称名称 );define( WEBSITE_URL, 地址地址 )31PHP与数据库代码开发规范与数据库代码开发规范1、PHP中对各类变量内容的命名规范中对各类变量内容的命名规范(3)数组变量命名:)数组变量命名:英文名词、动词,以下划线作为分隔,所有字母均使用小写以英文名词、动词,以下划线作为分隔,所有字母均使用小写以array结束结束$scope_array = array();$book_id_array = array();(4)对象变量命名:)对象变量命名:英文名词、动词,以下划线作为分隔英文名词、动词,以下划线作为分隔,可以完整采用类名或是简化类

35、名,但是可以完整采用类名或是简化类名,但是必须明确知道是什么类,所有字母均使用小写,在变量后加上必须明确知道是什么类,所有字母均使用小写,在变量后加上_obj$user_obj = new userAccount();$pay_obj = new payOrder();(5)类的命名:)类的命名:使用英文名词,以大写字母作为词的分隔,其他的字母均使用小写,名词的首使用英文名词,以大写字母作为词的分隔,其他的字母均使用小写,名词的首个字母使用小写,不使用下划线个字母使用小写,不使用下划线class userAccount 32PHP与数据库代码开发规范与数据库代码开发规范1、PHP中对各类变量内

36、容的命名规范中对各类变量内容的命名规范(6)方法命名:)方法命名:使用英文名词、动词,以下划线作为单词的分隔,所有字母均使用小写使用英文名词、动词,以下划线作为单词的分隔,所有字母均使用小写class userAccount public $name_account=; function is_account_ok() . function add_account() . 关于对象属性的命名同理!关于对象属性的命名同理!33PHP与数据库代码开发规范与数据库代码开发规范2、PHP中函数、符号、运算写作规范中函数、符号、运算写作规范(1)if语句大括号语句大括号规则:规则:将大括号放置在关键词后

37、方将大括号放置在关键词后方使用使用IF语句尽量使用大括号语句尽量使用大括号if ( $condition ) .else if ( $condition1 ) .else .尽可能避免右边使用方式尽可能避免右边使用方式34PHP与数据库代码开发规范与数据库代码开发规范2、PHP中函数、符号、运算写作规范中函数、符号、运算写作规范(2)、)、switch规则规则 每个每个case块结束处必须加上块结束处必须加上break,而,而default总应该存在处理未知情况,例:总应该存在处理未知情况,例:switch( $condition ) case user: . break; case type

38、: . break; default: . break;(3)、声明定位规则)、声明定位规则声明代码块需要对齐,且初次使用变量时需要初始化声明代码块需要对齐,且初次使用变量时需要初始化$tableName= ;$databaseObject= ;尽量不使用以下方式,例:尽量不使用以下方式,例:$tableName;$accuntName = ;$databaseObject = ;35PHP与数据库代码开发规范与数据库代码开发规范2、PHP中函数、符号、运算写作规范中函数、符号、运算写作规范html的的form表单各个元素名称与数据库字段尽量保持一致。表单各个元素名称与数据库字段尽量保持一致。

39、不要采用缺省方法测试非零值,必须显式测试,例:不要采用缺省方法测试非零值,必须显式测试,例:if ( $name_pay_into != false ) .else .*尽可能使用单引号尽可能使用单引号而不是双引号而不是双引号,在需要加入变量或是写在需要加入变量或是写sql语句除外。语句除外。*php文件中尽可能不出现文件中尽可能不出现html语句,如果实在无法解决尽量少用,考虑到模板的兼容性,语句,如果实在无法解决尽量少用,考虑到模板的兼容性,html文件中尽可能避免出现文件中尽可能避免出现php语句。语句。*通常每个方法只执行一项逻辑动作事务,所以对它们的命名应该清楚的说明它们是做什么的:

40、通常每个方法只执行一项逻辑动作事务,所以对它们的命名应该清楚的说明它们是做什么的:用用email_error_check()代替代替error_check()。请注意命名不要与系统方法冲突。请注意命名不要与系统方法冲突。36PHP与数据库代码开发规范与数据库代码开发规范3、PHP中各类注释规范中各类注释规范/* 分页预处理函数分页预处理函数* sqlSQL语句语句* page当前页数当前页数* limit每页显示的数量每页显示的数量* maxs查询总数查询总数*/function limit($sql,$page=0,$limit=10,$maxs=) /用户检测用户检测if( $check_

41、obj-username( $username ) = true ) $user_name = $_GETuser; /获取用户信息获取用户信息37PHP与数据库代码开发规范与数据库代码开发规范4、数据库设计与操作规范、数据库设计与操作规范数据库规范数据库规范数据库名称应该由概述项目内容的小写英文名词组成,以下划线分隔单词,数据库名称应该由概述项目内容的小写英文名词组成,以下划线分隔单词,避免跨平台时可能出现的避免跨平台时可能出现的大小写错误大小写错误。数据表名称应该由数据表名称应该由物件对象名称物件对象名称的小写英文名词组成(尽可能对应系统中的的小写英文名词组成(尽可能对应系统中的业务类名称

42、),以下划线分隔单词,避免跨平台时可能出现的大小写错误。业务类名称),以下划线分隔单词,避免跨平台时可能出现的大小写错误。数据表的字段应避免使用数据表的字段应避免使用varchar、text等不定长的类型,等不定长的类型,时间信息的字段使用时间信息的字段使用int类型存储。类型存储。查询数据连接多表时各资源应该使用全名称,即查询数据连接多表时各资源应该使用全名称,即tableName.fieldName,而不是而不是fieldName。SQL语句应尽可能符合语句应尽可能符合ansi92标准,避免使用特定数据库对标准,避免使用特定数据库对SQL语言的扩充特性。语言的扩充特性。38开发规范开发规范

43、1、设计新闻系统简单的、设计新闻系统简单的UML模模2、设计所需的环境、模块、模板样式、设计所需的环境、模块、模板样式3、数据库、数据库UML设计和创建数据库结构设计和创建数据库结构PHP+MySQL新闻系统的开发新闻系统的开发39搭配底层搭配底层1、建立底层结构和文件夹、建立底层结构和文件夹2、连接相关类和和配置数据库、连接相关类和和配置数据库3、调试后台并增加后台登陆管理功能、调试后台并增加后台登陆管理功能PHP+MySQL新闻系统的开发新闻系统的开发40PHP+MySQL新闻系统的开发新闻系统的开发1、建立底层结构和文件夹、建立底层结构和文件夹建立新项目建立新项目后台文件夹后台文件夹admin后台函数文件夹后台函数文件夹common根目录缓存文件夹根目录缓存文件夹cache函数文件夹函数文件夹common 全站配置文件夹全站配置文件夹config全站图片脚本等文件夹全站图片脚本等文件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论