1、Click to edit Master,Click to edit Master text,Second level,Third level,Fourth level,Fifth level,PHP+MySQL,动态网页技术教程,第,9,章 商城后台图书管理,模块开发,9.1,项目导引:后台图书管理模块,我们如何完成网站的日常管理呢?,图书的添加、修改,图书类别的添加、修改,网站后台管理系统,图书后台管理系统中的功能只有管理员才可以使用,普通用户没有权限使用。,9.2,项目分析,:ECSHOP,商城后台管理系统的功能主要包括用户管理、商品管理、订单管理和信息管理等内容,这里主要介绍图书管理
2、下面我们看一下,ECSHOP,后台管理系统中商品管理部分是如何做的?,1,新商品添加,9.2,项目分析,:ECSHOP,2,商品列表,3,商品分类,9.3,技术准备,9.3.1,文件上传,1,客户端设置,文件上传是通过,HTML,表单中的,标记选择本地文件实现上传。如果希望表单支持文件上传,则表单标签,中的,enctype,和,method,属性必须指明相应的值。,enctype,属性是设置表单的,MIME,编码,其值需设定为“,multipart/form-data”,,它的默认值“,application/x-www-form-urlencoded”,是不支持文件上传的;,method
3、属性值必须为“,post”,,“,get”,方式不能上传文件。,9.3,技术准备,9.3.1,文件上传,2,服务器端设置,PHP,的配置文件,PHP,的配置文件,php.ini,对上传文件的控制,包括是否支持上传、上传文件的临时目录、上传文件的大小、指令执行的时间和指令分配的内存空间。具体相关指令如下:,file_uploads,:是否支持上传。值为,on,表示服务器支持上传,值为,off,表示不支持上传;,upload_tmp_dir,:上传文件的临时目录。在文件上传到指定位置之前,文件会先传到这个临时目录位置;,upload_max_filesize,:服务器允许上传文件的最大值。系统默
4、认为,2MB,,如果上传文件超过这个值,则需要修改这个值;,max_execution_time,:,PHP,中一个指令所能执行的最长时间,单位为秒。如果上传文件过大,上传时间超过这个值,文件也不能上传成功;,memory_limit,:,PHP,中一个指令所分配的内存空间,单位为,MB,。它的大小同样会影响到超大文件上传。,9.3,技术准备,9.3.1,文件上传,2,服务器端设置,$_FILES,全局数组,表单通过,POST,方法上传的文件信息被存储在,$_FILES,全局数组中,如上传文件的名称、大小、类型等。,数组元素,说明,$_FILESfilenamename,存储上传文件的原文件名
5、包括扩展名,如,tmp.jpg,。,$_FILESfilenamesize,存储上传文件大小,单位为字节。,$_FILESfilenametmp_name,存储上传文件的临时目录和文件名。文件被上传后,先存储在服务器端的临时目录,临时目录位置由,PHP,配置文件中的,upload_tmp_dir,指令决定。,$_FILESfilenametype,存储上传文件的,MIME,类型,,MIME,类型规定各种文件格式的类型,每种,MIME,类型都是由“,/”,分隔的主类型和子类型组成,例如,“,image/gif”,的主类型为图像(,image,),子类型为,gif,格式的文件。,$_FILESf
6、ilenameerror,存储与上传有关的错误代码,其返回值有,5,种可能:,0,:表示没有任何错误,文件上传成功。,1,:表示上传文件的大小超出了在,PHP,配置文件中,upload_max_filesize,设定的值。,2,:表示上传文件超出了,HTML,表单中,MAX_FILE_SIZE,设定的值。,3,:表示文件只是部分被上传。,4,:表示没有上传任何文件。,9.3,技术准备,9.3.1,文件上传,2,服务器端设置,函数,move_upload_file(),文件上传后,首先会存储于服务器的临时目录中,可以使用该函数将上传文件移动到新位置。如果成功返回,ture,,否则返回,false
7、函数语法如下:,bool move_uploaded_file(string filename,string destination,),函数,is_uploaded_file(),该函数判断指定的文件是否通过,HTTP POST,上传的,如果是则返回,ture,。函数语法如下:,bool is_uploaded_file(string filename),3,文件上传实例,9.4,项目实施,主要实现包括图书查看、添加图书、修改图书和删除图书的功能。,9.4.1,图书的添加,实现图书添加的功能需要创建两个页面,添加图书页面,(addbook.php),和保存添加图书页面(,saveaddb
8、ook.php,),添加图书页面负责收集图书信息,保存添加图书页面负责接收图书信息并将信息添加到数据库图书表(,tb_book,)。,9.4,项目实施,9.4.2,图书的查看,单击,“,管理图书,”,超链接,弹出图书编辑管理页面,如图,96,所示。在这里我们可以查看图书、修改图书和删除图书。,9.4,项目实施,9.4.2,图书的删除,在图书管理页面(,show.php,)我们可以删除不需要的图书,图书删除分为一次删除一本图书和一次删除多本图书两种情况。,1,删除一本图书,删除一本图书的实现过程为,单击图书管理页面的“删除”超链接(,删除,),此时将要删除的图书编号传给图书删除页面(,delbo
9、ok.php,),图书删除页面根据图书编号执行,delete,语句将图书删除,,9.4,项目实施,9.4.2,图书的删除,2,删除多本图书,删除多本图书首先选中要删除图书左边的复选框,单击“删除所选图书”按钮,完成删除过程。下面先来看一下与此相关的图书管理页面中的代码。,提交表单:,表单提交到删除所有图书页面(,delallbook.php,)。,复选框,value=/,复选框,name,属性值为图书编号,,value,属性值为图书名称。,9.4,项目实施,9.4.2,图书的删除,2,删除多本图书,删除,按钮,删除按钮为提交按钮。,删除多本图书实现过程为:删除所有图书页面(,delallboo
10、k.php,)接收表单复选框的值,根据此值执行,delete,语句删除图书。由于存在多选的情况,复选框要传递过多个值过来,所以我们需要使用,list,和,each,数组函数,通过循环的方式逐个提取传递过来的值。,9.4,项目实施,9.4.3,图书的修改,单击图书管理页面中的,“,修改,”,超链接,进入图书修改页面(,changebook.php,),如图所示。在此页面显示出原图书信息,用户可以只修改错误信息,不用将所有信息都重新填写。,9.5,技术拓展,9.5.1,文件操作,1,打开文件,PHP,中使用,fopen(),函数打开一个文件,语法如下:,resource fopen(string
11、filename,string mode,bool use_include_path,resource zcontext),函数返回一个指向这个文件的文件指针。参数列表含义如下:,filename,:打开文件的,URL,,包括文件名,可以是绝对路径,也可以是相对路径。,mode,:打开文件的模式,主要有只读、只写、读写等模式,具体如表,9-2,所示:,use_include_path,:可选参数,决定是否在,php.ini,中,include_path,指定的目录中搜索,filename,文件,如果希望搜索则将其值设为,1,或,ture,。,zcontext,:可选参数,,fopen(),函数
12、允许文件名称以协议名称开始,例如“,”,,并且在一个远程位置打开文件。通过这个参数,还可以支持一些其它的协议。,例,9-8,9.5,技术拓展,9.5.1,文件操作,2,读取文件,fgetc(),函数:从文件指针的位置读取一个字符。,fgets(),函数:从文件指针位置读取一行字符串,fread(),函数:从文件中读取任意长度的数据,,,还可以读取二进制文件,例,9-9,、例,9-10,、例,9-11,9.5,技术拓展,9.5.1,文件操作,2,读取文件,readfile(),函数用于读取指定的整个文件,并写入到输出缓冲区,并返回读取的字节数。该函数也不需要使用,fopen(),函数打开文件。,
13、file(),函数用于将整个文件内容读入到一个数组中,数组中的每个元素都是文件中对应的一行。,file_get_contents(),函数用于将文件内容读入一个字符串。,例,9-12,9.5,技术拓展,9.5.1,文件操作,3,写入文件,f,write(),函数,函数用于执行文件的写入操作,函数语法格式如下:,int fwrite(resource handle,string string,int length),fwrite(),函数用于把,string,内容写入文件指针,handle,处。,例,9-13,9.5,技术拓展,9.5.1,文件操作,3,写入文件,file_put_content
14、s(),函数,函数用于将一个字符串写入文件中。如果成功,则返回写入的字节数,否则返回,false,。函数语法格式如下:,int file_put_contents(string filename,string data,int flags,resource context),filename,:指定写入的文件名;,data,:指定写入的数据;,flags,:实现对文件的锁定,可选值为,FILE_USE_INCLUDE_PATH,、,FILE_APPEND,和,LOCK_EX,(独占锁定);,context,:一个,context,资源。,例,9-14,9.5,技术拓展,9.5.1,文件操作,4
15、关闭文件,文件有打开就有关闭,对文件操作结束后,应该关闭这个文件,因为打开的文件要占用系统资源,同时如果不关闭,也容易引起错误。,fclose(),函数用于文件的关闭,函数语法格式如下:,bool fclose(resource handle),参数,handle,指向关闭的文件,函数如果执行成功返回,ture,,否则返回,false,。,9.5,技术拓展,9.5.2,目录操作,1,浏览目录,opendir(),函数:用于打开指定目录,如果成功返回可供其它函数使用的目录句柄,否则返回,false,。,readdir(),函数:返回目录指针位置的一个文件名,文件名以在文件系统中的排序返回。,s
16、candir(),函数:用于列出指定路径中的文件和目录,如果执行成功返回包含目录和文件名的数组,否则返回,false,。,closedir(),函数:打开目录之后,我们还需要关闭它,,closedir(),函数用于关闭指定打开的目录。,例,9-15,9.5,技术拓展,9.5.2,目录操作,2,创建、删除目录,mkdir(),函数:新建一个目录,成功返回,ture,,否则返回,false,rmdir(),函数:删除目录,目录必须为空目录,而且要有操作权限。如果目录中有文件,使用,unlink(),函数将目录中的文件删除后,再删除目录。,unlink(),函数:删除指定文件,成功返回,ture,,
17、否则返回,false,。,例,9-16,9.6,本章小结,为了保障大家对商城系统有一个更全面的认识,本章完成了商城后台管理系统中图书管理模块的开发,这也是本书唯一介绍后台模块开发的一章。主要包括图书的添加、修改、删除和查询,在图书添加过程中我们学习了图片上传的方法,介绍了几个文件操作函数。文件操作是,PHP,中的一项重要内容,在技术拓展部分对此进行了详细介绍。,9.7,强化练习,一、简答题,1,简述后台图书管理模块的实现思路及过程。,2,简述文件上传的过程及涉及到的相关函数。,3,PHP,中常用的文件、目录操作函数有哪些?,9.7,强化练习,二、操作题,1,在我们接收上传文件时,保存的文件名为原文件名,如果出现文件重名的情况文件就会被覆盖,如何解决这个问题呢?,2,完善商城后台管理系统,实现后台订单的管理,主要包括订单的查看,订单的查询,订单的修改和删除功能。,3,完善商城后台管理系统,增加后台用户管理模块,实现用户的查看、禁用和删除。,






