《辛星PHP教程秋季版之WEB开发.pdf》由会员分享,可在线阅读,更多相关《辛星PHP教程秋季版之WEB开发.pdf(93页珍藏版)》请在三一文库上搜索。
1、 1 / 93 2014 年辛星 PHP 教程秋季版第二本 -web 开发基础- *说明* 1.百度搜索“辛星 php”可以找到更多关于我的资料,如果您喜欢我 的风格,不妨去搜索一下,绝对您会看到更多。 2.私人 QQ:1808347923,私人邮箱:,私 人博客: 有的资源来下载,这些资源都是免费下载的,大多数是 pdf 文档。 *寄语* 特色:更新更全更实用。 纲领:传播编程知识,振兴中华软件。 目标:辛星系列帮您扫清自学道路上的一切障碍。 前进的路上,辛星陪伴您。 只要星哥在,编程充满爱。 辛星:我用我的努力给您的成功提供助力。 *感谢 * 1.在此感谢猫儿的一些建议,也感谢你一直的鼓励
2、与陪伴。 2.也感谢李璟,这个才华跟容貌兼备 、正义和爱心兼并的天才选手。 3.最后也期待您的关注和加盟,本教程也会因为有您的加盟而更加 精彩,联系方式在最上面已经给出了。 2 / 93 *PHP 系列书目* 1.辛星 PHP教程秋季版正式开工了,它的系列如下: 2.读者可以自由选择的阅读,今天是 2014 年 9 月 12 日星期五,是 一个相当特殊的日子,因为每年只有一个 9 月 12 日。 3.废话不多说了,如果您对 PHP 教程有更好的构架或者更好的想法, 不妨发给我,邮箱: ,或者加我的私人 QQ: 1808347923,也可以去我的博客留言: 虽然我时间很紧,但是仍然希望可以与大家
3、交流一下心得体会。 4.伟大的 Rasmus 把 PHP解析器的 C 代码无偿奉献给了我们,辛星 会举起这个大旗,用自己的行动把 PHP 这门语言让大家更好的掌握、 使用、精通。 3 / 93 目录: PHP 的定位3 第一部分:与 web 前端的交流 第一节:html 基础与混编5 第二节:表单、get、post9 第三节:cookie.13 第四节:session22 第五节:简单的登录系统28 第二部分:与数据库的交流 第一节:数据库的增删查32 第二节:php 操纵数据库.46 第三节:接下来的任务53 第三部分:会员管理系统 第一节:需求分析及建模55 第二节:确定页面的模板.59
4、第三节:库、测试、开发前台68 第四节:后台功能的完善.82 第五节:测评分析.92 关于我93 4 / 93 PHP 的定位 *开发团队* 1.我们知道开发团队有大有小,我见过的开发团队从两个人到十二 三个人都有,很大的我也没有经历过,再小的就不算团队了。 2.包括现在很多网站的草创之初还是几个人,负责开发的就更少了, 好像阿里巴巴当初只有一个程序员,当然他也是 CTO,也就是最高技 术负责人,这个我是看马云写的书得知的。 3.一般来说开发团队越小,你需要懂得的知识就越多,甚至从前台 到后台,从开发到运维,都需要知道,这就使得我们学习的难度骤 增,因为我们不仅要学习 PHP,还要学习很多周边
5、知识。 4.下面我给大家简介下这些周边知识,我也只是以我的经验。 *前端后端* 1.很多招聘 PHP 的同时还要求 html、css、Javascript 等知识,这说 明他们的团队一般较小,你一个人要做前台和后台,这就加大了学 习的难度。 2.前端虽然不难学习,但是做好并不容易,它的技术含量并不高, 但是艺术含量很高。就是说我们能做出来,但是做的不好看,不像 后台的功能,有些根本就做不出来。 3.前台的知识也很零散,我本人前台做的并不是很好,不过也还勉 强过得去的那种,我会出一套专门介绍 web 前端的书,本书并不会 介绍太多关于前端的东西。 *开发运维* 1.在水平差不多的情况下,开发的待
6、遇普遍比运维好一些,不过开 发通常比较累,因为需要赶工期,加班是日常便饭。 2.而且一旦需求一变,有些时候又需要翻工,这是最令人头疼的, 当然,功能的添加和改动也很头疼。 *奠基* 1.这里咱们介绍的知识还是蛮笼统的,因为咱们的重点是 php。 2.对于它的周边知识,咱们介绍的较为简略。 5 / 93 第一部分:与 web 前端的交流 第一节:html 基础与混编 *前端* 1.虽然咱们是开发后台的 php 的,但是咱们简单的前端知识还是要 知道的,就是一些 html、css、Javascript、jquery、bootstrap 等等 一些知识还是要知道的,不能说咱们和前端人员无法交流。 2
7、.有些其他方面的技术,是前端后端都需要的,比如表单数据、模 板、ajax、json 等等,这些咱们不论做前端还是后端都应该知道, 目的就是方便和队友交流。 3.本章咱们简单介绍下前端的一些东西,具体的大家可以搜索“辛 星 html”或者“辛星 css”或者“辛星 Javascript”等等来得到它的 更加详细的信息。 4.不过这里咱们还是简单介绍下前端的一些入门知识,主要是方便 零基础的朋友们看得懂,能操作。 *html* 1.我们可以新建一个 txt 文件,重命名为 demo1.html,然后用文本 编辑器打开,输入如下内容(不要输入这个数字,数字是它自动显示 的行号): 2.然后我们用浏览
8、器打开该文件,截图如下: 6 / 93 3.上面我们编写的就是一个基本的 html 文件,html 不是一门编程语 言,是一门标记语言,现在较为常用的还是 XHTML1.0,其实它和 HTML4.0.1 是基本一样的,HTML5 的使用也较为广泛了,但是还 没有真正意义上的普及。 4.HTML 使用一个一个的标签来表示它所拥有的元素,比如标 签对表示一个段落,比如标签对表示 HTML 文件的开始和 结束,表示一个图片,表示一个超链接,这些我们用到 的时候再说。 *css*Javascript* 1.CSS 就是级联样式表,用于表述一个网页文件的样式,可以内嵌到 HTML 文件中,也可以单独写到
9、外面。 2.Javascript 的名字容易和 Java 混淆,其实他们的语法格式、执行 原理、适用领域都千差万别。如果真要硬扯上关系,就是 Javascript 的开发人员给它起了一个让人混乱的名字,就比如某人叫辛星,某 人叫辛星琪。 3.本书是不怎么会涉及到的,但是并不代表它们不重要,下一本书 中我们就需要用到了,希望读者自行学习。 4.其实我之前编写过2014 年辛星 html、css 教程夏季版,但是 我看了我自己也不满意,就不给大家推荐了。 *混编* 1.咱们说过 PHP和 html 是可以混编的,也就是说,html 是可以嵌 入到 PHP 代码里面的,或者说是 PHP 嵌入到 ht
10、ml 代码里面。 2.我们看一个例子,我们新建一个 demo2.php,书写代码如下: 7 / 93 3.我们混编的要领如下:PHP代码使用和 html 代码分 开,就可以了。 4.我们看一下它的效果吧,在浏览器中输入 localhost/demo2.php, 看到效果如下: *稍微复杂语句的混编* 1.有时候我们会遇到一些稍微复杂一些的 php 语句,我们首先看一 个示例,我们新建一个 demo3.php,代码如下: 2.然后我们看一下它的运行效果吧: 8 / 93 3.我们分析一下上述代码,这里第二行进行了一下判断,也就是 if(23)这里由于 23 会返回一个 false,所以它会执行第
11、四行 esle 后面的语句,这里就是会输出第二个标签对中的内容,也就是 会输出“小倩永爱辛星”,应该很好理解吧。 4.对于 for 循环、while 循环其实都很类似啦,大家可以自己动手写 一些,然后分析一下运行结果,我就不废话了 。 9 / 93 第二节:表单、GET和 POST *GET* 1.我们之前主要是学习语法,那么我们需要给程序传递数据的时候 呢?我们可以在浏览器中传递参数进去,也就是所谓的“GET 传 参”。 2.我们在 URL 中使用 php 文件地址?参数 1=值 1 SET character_set_connection=gbk; SET character_set_re
12、sults =gbk; *数据查询* 1.一般来说,数据查询要麻烦一些,因为增删改数据都是直接执行 一条 SQL 语句,然后就判断是否执行成功就可以了,但是对于查询, 却需要对得到的结果集进行操作,原理稍有不同,我给大家介绍下。 2.它的原理如下:首先使用 mysqli_query 来得到一个结果集,这个 结果集是无法直接被查看的,然后咱们可以使用 mysqli_num_rows 来得到它的所有行数,然后对于每一行,咱们可以使用 mysqli_fetch_assoc 来获取它的具体的行的数据。 51 / 93 3.说了那么多,可能大家头都大了,我们用一个表格来表示: 4.咱们首先看一下咱们的
13、team 表中的数据: 5.然后咱们写一个 sqldemo5.php,代码如下: 6.然后咱们去运行该页面,看看效果,看看它是否真的能像我们想 象的那样,从数据库中完美的取出结果集,并且 var_dump 出来呢? 7.我们在浏览器中输入 localhost/sqldemo6.php,然后运行一下,最 终的效果如下: 52 / 93 8.至此,我们完成了从数据库中检索数据这一个功能,我对代码进 行一下说明吧:第 2 行我们连接数据库,第 3、4 两行我们设置了 结果集的编码、连接时候的数据编码、客户端编码,第 5 行我们写 了一个取出数据的 sql 语句。 9.第 6 行我们使用 mysqli
14、_query 获取了这个结果集,第 7 行我们使 用 mysqli_num_rows 获取了结果集的行数,然后第 8 到第 12 行, 我们对结果集的每一条记录,我们都使用 mysqli_fetch_assoc 来获取 它,并且使用 var_dump 来输出它。第 13 行我们关闭了这个数据库。 10.当然真正的应用中,我们不可能会这样使用 var_dump 来输出它, 这是没有任何作用的,那么真正的生产环境应该怎么写呢?我们拭 目以待吧。 *小结* 1.上一节我们学习了 mysql 的一些最最基本的操作,这一节我们又 介绍了使用 php 来操纵 mysql 的一些方法。 2.下面,我们就要完
15、成一个微型的小应用了,它是我们从单个页面 迈向工程开发的第一步,希望初学者可以跟着完成,高手就算了。 53 / 93 第三节:接下来的任务 *mysql* 1.如果读者在看我的教程之前没有任何的 mysql 功底的话,那你的 数据库知识学到这里,肯定是不够的。 2.我建议读者去看看我的 mysql 的教程(加我 QQ1808347923 给我 要就行,肯定我会很快传给你的),或者是看看其他人的 mysql 教程, 都是可以的。 *知识与技能* 1.我们的 php 的基础知识到现在也算基本具备了,但是我们的技能 却很低,因为我们没有几个像样的项目去写,这就导致我们总是不 自信。 2.就像一个军人
16、,在上战场之前,你给他讲再多关于瞄准的理论, 他在没有经过足够多的射击实战的时候,去战场打仗,总是心里发 虚:我行吗? 3.这也是很多培训机构、大学的一个弊端所在:就喜欢讲理论,不 给你实弹射击的机会。一般来说培训机构还好一点,会有几个模拟 项目练练手,大学是很少给到真实的项目的。 4.作为一个身经百战的“老兵”,我不喜欢给大家扯淡太多,咱们 直接拉到战场上去磨练,在实战中去学习,去知道哪些知识重要, 哪些知识不常用。 *先抓主干,然后修饰* 1.我一直认为学习一门编程语言,必须先抓其主干知识,然后再逐 点突破。 2.可能有人会问,什么才叫做主干知识呢?这本书大致给我们讲解 了:第一点,前台知
17、识是一块,第二点,php 语法是一块,第三点, mysql 是一块,第四点,建站思路是一块。 3.只要这些做好了,咱们就可以简单的做出来一个 demo了,不过 呢,这并不代表咱们的学习完成了,咱们接下来的路还有很长。 54 / 93 *实战开始* 1.接下来咱们做一个会员管理系统,是这样的,就是我在夏季版中 做了一个小型的 BBS(其实都称不上是 BBS),结果很多人说太难了, 因为它们初学,所以说感觉好吃力。 2.秋季版中我决定给大家一个合适的缓冲,一步一步的深入去做这 件事,直到这件事的完成。 3.如果您有什么好的建议,不妨给我发邮件或者是加我的 QQ,都 是可以的,我会在后续版本中改正的
18、。 *后续学习* 1.咱们做完这个小项目之后,还会学习诸如 smarty、thinkphp 等东 西,这些东西大家关键是学习它们的思想,而不是去死记硬背它们 的语法。 2.之后我们会做自己的框架,然后根据我们的框架写应用,这些都 是蛮重要的,不过呢,这些都是以目前的学习作为基础的。 55 / 93 第三部分:会员管理系统 第一节:需求分析及建模 *目的* 1.咱们的目的就是熟练增删改查这个比较基本的应用。 2.原理很简单,但是有些细节还是需要注意的,那么我们来一次实 战性的练习吧。 *开发流程* 1.咱们还是使用标准的开发流程,就是需求分析数据库建模写 模板开发测试部署运行。 2.这中间可能要
19、写很多文档,包括可行性研究报告、项目开发计划、 软件需求说明、用户手册、概要设计说明、详细设计说明、项目开 发总结报告、测试分析报告等等,其实呢,这么多文档是不是一定 要全部写完呢? 3.答案是不一定,原因很复杂,而且热衷于“敏捷开发”的它们更 喜欢口头交流,不喜欢写严谨的文档,而大型项目,由于面临复杂 的分工,必须每个人都清楚每个人的职责,这个时候的文档是必须 要写清楚的。 4.咱们这个由于所有东西都是我一个人开发,所以文档就不写了, 咱们第三本中写的那个 BBS,是要写严格的文档的。 5.咱们这个只是实现其大致功能就可以了,首先咱们进行需求分析。 *需求分析* 1.功能上,前台分为用户的登
20、录、注册、注销这三个功能,后台分 为用户的添加、删除、修改信息、用户信息浏览这四个功能。 2.这个功能分析可以使用 word 文档的形式,也可以使用 Excel 表格 的形式,还可以是一些的软件,它多用于开发团队和客户之间的交 流,因此不宜做的过于专业,而且咱们真正开发的时候,还会做更 加细致的分工,它是一个相对概括的东西。 3.光说是没意思的,我用表格的形式给大家做个 demo 看看效果, 大家也可以去学习下: 56 / 93 分类 功能 备注 普通用户 注册 实现用户的注册功能 登录 用单独的页面实现用户登录 注销 用户退出 管 理 员 增加 添加用户 删除 删除用户全部信息 修改 修改用
21、户信息 浏览 查看用户信息 登录 和普通用户一样登录 注销 退出系统 4.这个我只是大致的说了一下,真正的开发的时候,用户的需求可 能很复杂,比如说登录页面,要做成类似百度那样的,总之挺麻烦 的,这个备注里面尽可能的详细,不要模棱两可。 5.接下来我用建模软件给大家做一个效果,也是很简单的一个图, 它不是给专业开发人员看的,它是给拿些客户看的: 6.这个呢,我相信大家一看就懂了,需求就大致明确了,到这里就 基本完工了。 57 / 93 *数据库建模* 1.接下来咱们进行数据库建模,其实它只有一个数据表,叫做 user, 那么咱们可以使用数据库建模工具来做它。 2.这里随便找了个建模工具,给出模
22、型如下: 3.然后咱们导出 sql 语句,发现语句如下: 4.既然得到了 sql 语句,就要开始在开发环境上创建库、创建表了, 首先咱们创建一个库叫做 usermanage,如下: 58 / 93 5.然后执行建表: 6.至此,数据库建模完毕。 *已经完成的任务 * 1.读者可能没有用过这些建模工具,也可能不太懂什么叫建模,不 过没关系,在第三本中大家就有能力自己建模了。 2.这一本我只是给大家说一下建模是干什么用的,第一个建模是为 了明确功能,第二个建模是为了创建数据库。 *接下来的任务* 1.接下来的任务也很明确,就进入了正式的开发和测试阶段。 2.主要任务就是前端和后端,前台和后台,具体
23、任务咱们在下面再 说。 59 / 93 第二节:确定页面的模板 *开发事宜* 1.实际上,咱们上一个的用例图是写给客户看的,咱们真正做开发 的时候很少看。 2.咱们通常把用例图上的这个功能变成咱们自己的行话,比如说 “选购商品”咱们可以写成“添加订单表数据”。就是说用户对这 个修改数据库不感兴趣,但是他知道“购物”和“支付”是什么意 思,咱们做开发的时候,对这些抽象的概念又不好理解,咱们换成 具体的功能实现。 *页面的确定* 1.只要功能定下来,页面几乎也就定下来了。一般来说,是一个功 能对应一个页面,但是也不绝对是这样。 2.咱们先在 www 目录下新建一个 usermanage 文件夹,然
24、后新建如 下的文件,为了让大家对它们有个感性的认识,咱们把文件名连同 作用一起介绍下: 文件名 作用 admin.php 后台用户的管理 footer.php 网页尾部信息 header.php 网页头部信息 index.php 网站首页信息 login.php 登录页面 reg.php 注册页面 3.下面先给这些页面来个特写吧: 4.那么这些页面应该怎么写呢?咱们接下来一一为大家进行分析, 绝对让大家可以跟得上我的思路。 60 / 93 *header.php* 1.首先要写的就是 header.php,它是一个网站的头部的公共部分, 我们把这部分给拿出来,目的就是让所有的网站都有一个公共的
25、头 部。 2.下面是它的代码: 3.纳尼,只有两行代码?没错,确实两行代码就足够了,下面是它 的运行效果: 4.当然,这个效果还可以吧,至少我感觉还可以。 *footer.php* 1.接下来我们去写 footer.php 文件,它的代码如下: 2.看到了吧,它也只有短短的 5 行代码,它的作用通常就是写一些 信息什么的,比如版权信息,这个 ©;就是版权信息符号 , 待会儿大家就可以看到了。 61 / 93 3.我们运行这个页面,看到效果如下: 4.这个尾部文件,通常怎么写都无所谓啦,看个人喜好,不过一般 都喜欢加上版权信息,还有的会写上友情链接、招聘信息什么的。 *index.php
26、* 1.index.php 的作用就是首页信息,所谓首页,就是初次登陆的时候 的页面。下面我们给出 index.php 的代码,截图如下: 2.它的代码还是很好理解的,这里的第一行导入了头部文件,第五 行导入了尾部文件,第 2 和 3 行则分别是登录、注册的超链接。 3.当然了,这里我们之后还会改变它,但是从一个模板的角度来考 虑,做到这样已经很不错了,我们在真正的开发的时候,还会去修 改它的内容,第四行是一段文本信息。 62 / 93 4.接下来我们看下它的效果把: 4.当然它的界面并不美观,原因就是我为了让大家便于模仿,没有 在外部文件中写任何的 css,否则会让大家在跟我做的时候会感觉很
27、 别扭。 5.这里的注册和登录功能,咱们待会儿去别的页面实现。 *login.php* 1.然后咱们写 login.php,它的目的就是用户登录页面,代码如下: 2.这里它除了引入头尾文件之外,还有一个表单,该表单提交给 logmem.php 文件,而且提交方式使用 post,它提交两个数据,分 别是 mid 和 pwd。 3.这里我们一切求简,也没有做很漂亮的页面,大家理解其大致用 法就可以了。 4.它的运行效果如下: 63 / 93 5.这个页面可以说还是蛮烂的,但是作为新手,它还有有一定的价 值的。 *reg.php* 1.reg.php 是注册页面,它的页面和 login.php 页面
28、非常相似,它的 代码如下: 2.它的 action 指向的是 regmem.php 页面,很显然这个页面现在并 不存在,等我们在开发阶段再去写这个页面的具体实现功能。 3.它和 login.php 是极度的相似,其实我也就是复制粘贴过去的,它 需要更改的地方有两个:第一个就是第二行的 action 的值,把 logmem.php 改为 regmem.php,然后第五行的 value 的值“登录” 改为“注册”就可以了。 64 / 93 4.我们看一下它的效果吧: 5.这就是它的注册页面,咱们没有进行太多的美工,看起来并不是 那么帅气,不过勉强能看,仅此而已。 *admin.php* 1.这个页
29、面是后台管理页面,它负责只有管理员有权限进入,而且 它负责的信息是用户信息的管理,来个截图: 2.那么对于它,这里是把具体数据写出来了,不过没关系,咱们后 面开发的时候肯定需要把这些数据给替换掉的,也就是咱们肯定从 数据库里面取出数据。 3.这里只是给出一个大概的样子,真正的开发的时候咱们会用 php 代码去替代它。 65 / 93 4.给它来个特写把: 5.咱们的模板就写的差不多了,可能有人会说:是不是需要点其他 的页面呢?答案是需要的,不过目前不用去写,等我们开发阶段再 去写。 *已经完成的工作* 1.咱们真正开发的时候,可能没有产品经理,但是一般有项目经理。 2.项目经理应该会指定相应的
30、工期和工作流,咱们只需要服从就可 以了,当然这个项目很小,大家都可以当一把项目经理。 3.咱们这一节完成了模板的制作,通常来说是前台人员负责的,他 们写好模板之后,交付给我们,我们开始进行处理。 4.真正的开发环境中,咱们多半是使用现有的框架的,这样前台和 后台可以同时开发,不用前端等后端,后端也不用等前端,同时开 发,效率很高。 *接下来的任务* 1.接下来咱们就开始进入真正的开发环节,咱们写的代码也是 php 代码居多。 2.这里大家可以学习下我的一些习惯,不一定是什么好习惯,但是, 我会给大家介绍的。 *说明* 1.这里我只是模拟正式的开发流程。 2.等我们学了框架,我会让大家体验真正的
31、开发流程。 66 / 93 *版本控制*多人开发* 1.稍微有些开发经验的都知道,版本控制很重要。 2.什么是版本控制呢?版本控制通常用于多人开发,当然单人开发 也可以用。 3.我们完成的是一个任务,我们的源代码最终只有一份,但是我们 多个人开发,就会产生多份源代码。 4.比如最初的代码记为 A,这是最初的版本。然后两个人拿走了这 份代码,它们独立的修改它的功能,修改后记为 B 和 C,那么有一 个人先提交了,这时候最新的版本就是 B,过了一段时间之后,另 一个人也提交了,这时候最新的版本就是 C,问题出现了。 5.C 版本并没有 B 版本中的代码的功能,因为他们两个人是独立开 发的,也就是说
32、其他人是继续开发 C 版本呢还是继续开发 B 版本呢? 显然都不好,它们应该开发 B+C 这个版本才是最好的。 6.也就是说,某一个人提交了 B 版本之后,当另一个人想要提交 C 版本的时候,咱们的版本控制软件有能力把 C 版本的内容给融合到 B 版本中去,形成 B+C 版,不妨记为 Cb 版,它是通过查看文件名、 文件代码行数等功能去实现的。 7.其他人再去开发的时候,只需要取走这个 Cb 版就可以了,它们不 需要在 B 版本和 C 版本之间犹豫。 8.对于多人开发来说,版本控制这么重要的原因就在这里,由于咱 们没有多人开发,大家理解还是不会太深刻,等我们以后模拟多人 开发的时候,我会告诉大
33、家的。 *版本控制*单人开发* 1.对于单人开发,版本控制有没有必要呢?答案还是有的,为什么 呢?原因就在于版本控制的“回退功能”。 2.比如咱们添加了一个新功能,结果导致了其他很多功能都乱套了, 这个时候咱们需要修复一系列的 bug,这个过程如果很难做,就是 做了很长时间依然 bug 不断,这个时候我们可以考虑去掉这个功能, 我们怎么样才能把新加的代码去掉呢? 67 / 93 3.咱们直接使用之前的版本就可以了,也就是说,咱们把之前标记 为版本号 xxx.xxx.xxx 的拿过来直接使用就可以了,现在这个 bug 不断的代码,咱们打包起来记为一个不稳定版本就可以了。 *对于大家* 1.同时版
34、本控制也让大家更好学习,大家在跟我做的时候,只需要 查看当前版本的源代码,并且完成好任务就可以了。 2.版本号怎么记,这个发行版的话,一般是遵循主版本号.副版本号. 阶段版本号.发行日期_阶段说明 这个格式,比如 0.0.1.140912_beta, 也可以不写这么复杂,直接给一个大概的形式就可以了。 3.好,我们把目前的代码打包记为“0.0.1 版本”,压缩为一个 zip 文件就可以了: 68 / 93 第三节:库、测试、开发前台 *库代码* 1.一般来说,每个项目都要有自己的类库,比如说验证码、加密函 数、权限管理等等,这些咱们使用自己的专有函数。 2.通过把常用的代码、经常修改的代码、重
35、要的代码放到类库里面 去,便于统一管理和减少代码书写量。 3.咱们可以使用自己开发的类库,也可以使用第三方库。 *测试* 1.为什么要测试呢?其实咱们之前写代码也会进行测试,就是检测 下代码运行是否正确。它的目的只有一个:保证代码的正确性和合 理性。 2.也就是说,咱们不把所有功能都写完之后再测试,而是每写一个 功能都会测试一下这个功能是否正确,然后添加到项目中,在测试 其他功能是否收到影响。 3.有时候我们添加一个新功能,会导致其他功能莫名其妙的有问题, 比如这两个功能是两个人写的,都需要用到 session,结果一个人修 改的 session,影响到了另一个人。 *测试函数* 1.咱们 P
36、HP有自己的测试,就是 PHPunit,不过咱们还没有学面向 对象,也就不使用它了。 2.咱们自己写一些测试函数就可以了,测试函数怎么写?我待会儿 告诉大家。 3.大家一定要记住:测试很多时候也是通过代码来执行的,而且这 个代码不要扔掉,我们可能需要多次使用到它。 *测试人员的分工* 1.一般来说,大一点的团队要有专门的测试人员,也就是有人专门 写测试类来检测其他人的代码的功能。 69 / 93 2.还有些情况是“谁开发谁测试”,这个的话效率很高,但是容易 测试效果不够好,因为他测试的那些情况都是他开发的时候已经想 到的,另一个人测试就不一样了,他不会进入思维误区。 *写库代码* 1.这个库代
37、码,通常是一些函数和类,这里咱们没有学类,咱们就 写函数。 2.咱们在该文件夹下新建一个 fun.php,它只需要两个函数就可以了, 咱们分别写为 xget和 xq,其中 xget用于接收一个 sql 语句,并且以 二维数组的形式返回其中的数据,即我们把所有的数据都放到这个 数组中,再返回。其中 xq 也接收一个 sql 语句,但是它用于非查询 的功能,比如向表中插入数据、修改数据、删除数据等等一些操作。 3.代码如下: 4.这个代码很简单,我上面只是给了文件的注释和函数的注释,具 体的代码我相信大家都看得懂,就不给注释了。 70 / 93 5.总之第 14 行连接数据库,第 15、16 行设
38、置 gbk 字符集,第 17 行 执行这个 sql 语句,第 18 行把这个结果返回。 6.这个函数应该怎么处理呢?不急,我们接下来编写一个测试文件。 *测试文件* 1.咱们在该文件夹下新建一个 test.php 文件,代码如下: 2.它的目的就是测试插入数据能否成功,注意这里的 pwd,也就是 秘密字段,咱们通常使用 md5 加密,也就是不在数据库中存储明文, 这样即使咱们的数据库被不法分子给浏览了,只要它没有修改,那 么他就无法登录。 3.记得有一年 csdn 就是在数据库中用明文存储了用户的密码,结果 导致了用户数据的泄露,危害很大。 4.废话不多说,我们运行上述测试代码,看看效果吧:
39、71 / 93 5.其实我最信任的还是命令行,咱们到命令行下面看看效果吧: 6.很好,数据插入应该没问题,接下来数据修改、数据删除这些测 试代码按理来说都应该有,但是由于它比较简单,就不用多方测试 了。 *工作流程 * 1.很多朋友们可能也会发现了:测试和开发并没有太多的关联,也 就是他们是可以并行执行的。 2.没错,两个人同时写代码,一个人去实现这个功能,另一个人去 检测这个功能,效率会高很多,当然,这个函数的接口必须提前写 好。 3.这些测试代码大家不要扔掉,它们会被多次的重复使用来进行代 码测试,这样的话,咱们尽可能高的利用咱们已有的代码,这是非 常重要的。 72 / 93 *库函数的完
40、善* 1.接下来咱们继续把库函数写完,也就是在 fun.php 中继续添加一些 代码,代码如下: 2.接下来咱们在 test.php 中添加相应的测试函数: 73 / 93 3.然后咱们就可以运行一下 test.php 了,看下效果: 4.至此,咱们的库函数就完成了,接下来咱们写注册页面、登录页面、 注销页面的实现。 *注册功能* 1.咱们接下来写注册功能,咱们写一个 regmem.php 文件,代码如 下: 74 / 93 2.此时我们先在浏览器中输入 localhost/usermanage/reg.php,然后在 里面输入相应的用户名和密码: 3.然后点击“注册”按钮,发现就来到了如下页
41、面: 4.此时信息注册成功,我在 MySQL 控制台下的截图: 5.接下来还应该怎么做呢? 75 / 93 *接下来的工作* 1.接下来我们就需要让它跳转到首页了,就是 index.php 页面,但是 跳转之前呢,我们需要写入到 cookie里面一点信息才行。 2.这里我们需要修改上述代码,如果注册成功,我们跳转到首页即 index.php,如果失败,还是跳转到 reg.php,代码如下: 3.简单吧,我们首先来到注册页面: 4.然后我们点击“注册”之后,看到效果如下: 76 / 93 5.然后他就会回到首页: 6.这里咱们完成的功能就是:实现注册,也就是向数据库中写入数 据,并且注册成功之后跳转到 index.php,也就是首页,注册失败就 会跳转到 reg.php。 7.这里使用了 Javascript 的知识,不太懂的话,可以去学习下,其实 它的功能很简单,就是实现页面的跳转。 *修改首页显示* 1.咱们的这个首页有点问题,问题在哪呢? 2.问题就在于我们注册之后,把信息写入到了 cookie,但是它没有 及时从 cookie 里面取出相应的信息,还是显示“登录”,这就不好 了。 3.接下来,我们注册完毕之后,会跳转到首页,我们的首页应该有 从 cookie中提取信息的能力,这就需要修改源代码。 4.因此,我们修改 index.php 的代码如下: 77 / 9