《PHP+MySQL动态网站开发》 课件-第4章 PHP进阶_第1页
《PHP+MySQL动态网站开发》 课件-第4章 PHP进阶_第2页
《PHP+MySQL动态网站开发》 课件-第4章 PHP进阶_第3页
《PHP+MySQL动态网站开发》 课件-第4章 PHP进阶_第4页
《PHP+MySQL动态网站开发》 课件-第4章 PHP进阶_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

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

文档简介

第4章PHP进阶《PHP+MySQL动态网站开发》学习目标/Target熟悉常见的错误级别掌握如何进行错误处理掌握HTTP请求与响应的基本概念掌握会话技术Cookie和Session的基本使用学习目标/Target熟悉图像的处理和文件的基本操作掌握表单的接收与处理方法掌握正则表达式的使用方法章节概述/Summary在前面的章节中讲解了PHP的基本的语法,相信读者已经可以编写简单的程序了,但在实际开发中,还会用到一些进阶的知识,包括错误处理、HTTP、会话技术、图像处理、目录和文件操作、表单传值和正则表达式等,本章将会对这些内容进行详细讲解。目录/Contents01020304错误处理HTTP会话技术图像处理目录/Contents050607目录和文件操作表单传值正则表达式错误处理4.14.1.1错误级别

先定一个小目标!熟悉错误级别,能够说出PHP中常见的错误级别的含义4.1.1错误级别级别常量值描述E_ERROR1致命的运行时错误,这类错误不可恢复,会导致脚本停止运行E_WARNING2运行时警告,仅给出提示信息,但是脚本不会停止运行E_PARSE4编译时语法解析错误,说明代码存在语法错误,无法执行E_NOTICE8运行时通知,表示脚本遇到可能会表现为错误的情况E_CORE_ERROR16类似E_ERROR,是由PHP引擎核心产生的E_CORE_WARNING32类似E_WARNING,是由PHP引擎核心产生的E_COMPILE_ERROR64类似E_ERROR,是由Zend脚本引擎产生的错误级别:PHP中有多种错误类型,每个错误都对应了错误级别,使用常量表示错误级别。常见的错误级别:(1/2)4.1.1错误级别级别常量值描述E_COMPILE_WARNING128类似E_WARNING,是由Zend脚本引擎产生的E_USER_ERROR256类似E_ERROR,由用户在代码中使用trigger_error()产生的E_USER_WARNING512类似E_WARNING,由用户在代码中使用trigger_error()产生的E_USER_NOTICE1024类似E_NOTICE,由用户在代码中使用trigger_error()产生的E_STRICT2048严格语法检查,确保代码具有互用性和向前兼容性E_DEPRECATED8192运行时通知,对未来版本中可能无法正常工作的代码给出警告E_ALL32767表示所有的错误和警告信息(在PHP5.4之前不包括E_STRICT)常见的错误级别:(2/2)4.1.1错误级别//①使用未定义的变量echo$var;

//提示信息“Notice:Undefinedvariable…”//②使用未定义的常量echoPI;

//提示信息“Notice:Useofundefinedconstant…”Notice:是代码不严谨造成的,不会影响脚本继续执行。Notice(E_NOTICE)Notice错误信息代码示例4.1.1错误级别//①除法运算时,除数为0echo5/0;

//提示信息“Warning:Divisionbyzero…”//②使用include包含不存在的文件include'1234';

//提示信息“Warning:include():Failedopening…”Warning:比Notice更严重一些,不会影响脚本继续执行。Warning(E_WARNING)Warning警告信息代码示例4.1.1错误级别Fatalerror:致命错误,一旦发生这种错误,PHP脚本会立即停止执行。Fatalerror(E_ERROR)display();//Fatalerror:UncaughtError:Calltoundefinedfunction…echo'hello';//前一行发生错误,此行代码不会执行Fatalerror错误信息代码示例4.1.2错误处理

先定一个小目标!熟悉错误处理的方法,能够控制错误的显示、隐藏,或将错误信息记录到日志文件中4.1.2错误处理error_reporting(E_ALL);ini_set('display_errors',1)修改配置文件代码示例使用函数代码示例error_reporting=E_ALLdisplay_errors=On在浏览器中显示错误信息的两种方式:通过修改配置文件来显示错误报告,通过PHP提供的函数来显示错误报告。在浏览器中显示错误信息设置错误级别设置是否显示错误信息设置错误级别设置php.ini中指定选项的值4.1.2错误处理//错误信息发送到php.ini中的error_log配置的日志中error_log('errormessagea');//将错误信息发送到指定的日志文件中error_log('errormessageb',3,'C:/web/php.log');error_reporting=E_ALL;log_error=Onerror_log=C:\web\php_errors.log记录错误日志的两种方式:通过配置文件和error_log()函数记录错误日志信息。记录错误日志配置文件代码示例设置是否记录日志指定日志写入的文件路径使用函数代码示例第2个参数指定错误信息发送位置,设置为3表示发送到指定文件,省略时发送到php.ini的error_log配置的日志中。第3个参数取决于第2个参数,此处表示日志文件的路径。HTTP4.24.2.1什么是HTTP

先定一个小目标!熟悉什么是HTTP,能够说出HTTP的概念和特点4.2.1什么是HTTPHTTP:超文本传输协议(HyperTextTransferProtocol)由W3C组织推出,用于定义浏览器与Web服务器之间数据交换的格式。浏览器与Web服务器交互过程:4.2.1什么是HTTPHTTP在Web开发中占据重要位置的原因:简单快速客户端向服务器发送请求时,只需发送请求方式和路径,HTTP服务器的程序规模小,通信速度快。无连接限制每次连接只处理一个请求,服务器处理完请求并收到应答后,即断开连接,节省传输时间。灵活HTTP允许传输任意类型的数据,传输的数据类型由Content-Type标记。无状态协议对事物处理没有记忆能力,如果后续处理需要前面的信息,必须重新传递,增加传送数据量。4.2.2HTTP请求

先定一个小目标!掌握HTTP请求,能够说出HTTP请求的各个部分的含义4.2.2HTTP请求空行用来分隔请求头和请求体。请求行位于请求消息的第一行,包括请求方式、请求资源路径(URI)和HTTP版本。请求体通过POST方式提交表单时,浏览器会将用户填写的数据放在实体内容中发送。数据格式是“name=value”,多个数据使用“&”连接。请求头主要用于向服务器传递附加消息,例如,浏览器可以接收的数据类型、压缩方法、语言和系统环境。HTTP请求消息:用户在浏览器中访问某个URL地址时,浏览器会向服务器发送请求。HTTP请求消息4.2.2HTTP请求HTTP请求方式请求方式说明HEAD通过发送HTTP请求从服务器获取数据GET与HEAD一样,但是GET是通过自身携带的数据来获取服务器数据POST向指定资源提交数据进行处理请求PUT向指定资源位置来提交数据DELETE通过指定数据来删除服务器的数据OPTIONS获取URL所支持的方式4.2.3查看请求信息

先定一个小目标!熟悉如何查看请求信息,能够利用Chrome浏览器开发者工具查看请求信息4.2.3查看请求信息借助工具查看请求信息:使用Chrome浏览器,按F12键打开开发者工具,切换到Network选项卡刷新网页,就可以看到当前网页从第1个请求开始,依次发送的所有请求。以查看百度网站请求信息为例:4.2.3查看请求信息请求头描述Accept客户端浏览器支持的数据类型Accept-Charset客户端浏览器采用的编码Accept-Encoding客户端浏览器支持的数据压缩格式Accept-Language客户端浏览器所支持的语言包,可以指定多个Host客户端浏览器想要访问的服务器主机If-Modified-Since客户端浏览器对资源的最后缓存时间Referer客户端浏览器指向的Web页的URLUser-Agent客户端的系统信息,包括使用的操作系统、浏览器版本号等Cookie客户端向服务器发送请求时发送Cache-Control客户端浏览器的缓存控制Connection请求完成后,客户端希望是保持连接还是关闭连接常见的请求头字段:4.2.4HTTP响应

先定一个小目标!掌握HTTP响应,能够说出HTTP响应的各个部分的含义4.2.4HTTP响应HTTP响应消息:服务器接收到请求数据后,将处理后的数据返回给客户端。空行用来分隔响应头和响应体。响应行位于HTTP响应消息的第一行,用于告知客户端本次响应的状态。响应体服务器给浏览器返回的数据。响应头告知浏览器本次响应的基本信息,包括服务程序名,内容的编码格式、缓存控制等。HTTP响应消息4.2.4HTTP响应以百度网站为例,查看响应信息:4.2.4HTTP响应响应状态码:服务器对客户端请求的各种不同的处理结果和状态,由一个三位十进制数表示。响应状态码分类:1xx:成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。2xx:成功接收请求并已完成整个处理过程。3xx:未完成请求,客户端需要进一步细化请求。4xx:客户端的请求有错误。5xx:服务器端出现错误。常见响应状态码:状态码含义说明200正常客户端的请求成功,响应消息返回正常的请求结果403禁止服务器理解客户端的请求,但是拒绝处理。通常由服务器上文件或目录的权限设置导致404找不到服务器上不存在客户端请求的资源500内部服务器错误服务器内部发生错误,无法处理客户端的请求4.2.4HTTP响应响应头含义Server服务器的类型和版本信息Date服务器的响应时间Expires控制缓存的过期时间Location控制浏览器显示哪个页面Accept-Ranges服务器是否支持分段请求,以及请求范围Cache-Control服务器控制浏览器如何进行缓存Content-Disposition服务器控制浏览器以下载方式打开文件Content-Encoding实体内容的编码格式Content-Length实体内容的长度Content-Language实体内容的语言和国家名Content-Type实体内容的类型和编码类型Last-Modified请求文档的最后一次修改时间Transfer-Encoding文件传输编码Set-Cookie发送Cookie相关的信息Connection是否需要持久连接常见的响应头字段:4.2.5PHP设置响应头

先定一个小目标!掌握如何设置响应头,能够利用header()函数设置响应头4.2.5PHP设置响应头//设定编码格式header('Content-Type:text/html;charset=UTF-8');//页面重定向header('Location:login.php');//设定图片格式header('Content-Type:image/png');设置响应头:通过header()函数设置。设置响应头代码示例4.2.5PHP设置响应头多学一招:MIMEMIME:表示内容的类型,表示方法为“大类别/具体类型”。类型含义text/plain普通文本(.txt)text/xmlXML文档(.xml)text/htmlHTML文档(.html)image/gifGIF图像(.gif)image/pngPNG图像(.png)image/jpegJPEG图像(.jpg)4.3会话技术4.3.1Cookie简介

先定一个小目标!熟悉什么是Cookie,能够说出Cookie的用途和传输过程4.3.1Cookie简介Cookie在浏览器和服务器之间的传输过程:4.3.2Cookie的基本使用

先定一个小目标!掌握Cookie的基本使用,能够使用setcookie()函数创建或修改Cookie4.3.2Cookie的基本使用boolsetcookie( string$name, //Cookie的名称(必须) string$value='', //Cookie的值(可选) int$expire=0, //Cookie的有效期(可选) string$path='', //Cookie在服务器端的路径(可选) string$domain='', //Cookie的有效域名(可选) bool$secure=false, //指定是否通过安全的HTTPS连接来传输(可选) bool$httponly=false //指定Cookie只能通过HTTP协议访问(可选))创建Cookie:使用setcookie()函数创建或修改Cookie。语法格式4.3.2Cookie的基本使用<?phpsetcookie('name','value');创建Cookie:使用setcookie()函数创建Cookie。查看响应头信息:浏览器访问,查看响应头信息。HTTP中的Cookie信息:在开发者工具中切换到【Network】→【Cookie】。4.3.2Cookie的基本使用var_dump($_COOKIE);//输出结果:array(2){["name"]=>string(5)"value"}读取Cookie:使用超全局变量$_COOKIE读取Cookie。读取Cookie代码示例注意:当PHP第一次通过setcookie()函数创建Cookie时,$_COOKIE中没有数据,只有当浏览器下次请求并携带Cookie时,才能通过$_COOKIE获取到。4.3.2Cookie的基本使用//Cookie存储复杂数据setcookie('user[name]','tom');setcookie('user[age]',30);//输出结果:array{["user"]=>array{["name"]=>"tom"["age"]=>"30"}}var_dump($_COOKIE);Cookie存储多个值:在Cookie名后添加“[]”进行设置。Cookie存储复杂数据代码示例4.3.3Cookie的高级应用

先定一个小目标!掌握Cookie的高级应用,能够设置Cookie的过期时间、访问路径、有效域名4.3.3Cookie的高级应用//第3个参数设置Cookie有效期setcookie('name','value',time()+1800);//30分钟后过期setcookie('name','value',time()+60*60*24);//一天后过期setcookie('name','',time()-1); //立即过期(相当于删除Cookie)//第4个参数设置Cookie的访问路径setcookie('name','value',0,'/'); //当前整个网站都可访问//第5个参数设置Cookie的有效域名setcookie('name','value',0,'/','.com'); //所有.com的网站都可以访问Cookie高级使用:通过第3个参数设置Cookie的生命周期,通过第4个参数设置Cookie的访问路径,通过第5个参数设置访问网站。4.3.4Session简介

先定一个小目标!熟悉什么是Session,能够说出Session的用途和实现原理4.3.4Session简介Session存储在服务器端,实现数据跨脚本共享的会话技术,Session技术的实现依赖于Cookie技术。Session实现原理:4.3.5Session的基本使用

先定一个小目标!掌握Session的基本使用,能够实现Session的开启、添加数据、删除数据等操作4.3.5Session的基本使用session_start(); //开启Session$_SESSION['name']='tom'; //向Session添加数据(字符串)$_SESSION['id']=[1,2,3]; //向Session添加数据(数组)unset($_SESSION['name']); //删除单个数据$_SESSION=[]; //删除所有数据session_destory(); //结束当前会话Session的使用代码示例4.3.6Session的配置

先定一个小目标!掌握Session的配置,能够根据需求更改Session的配置4.3.6Session的配置配置项含义指定Cookie的名字,只能由字母和数字组成,默认为PHPSESSIDsession.save_path读取或设置当前会话文件的保存路径,默认为“C:\Windows\Temp”session.auto_start指定是否在请求开始时自动启动一个会话,默认为0(不启动)session.cookie_lifetime以秒数指定发送到浏览器的Cookie生命周期,默认为0(直到关闭浏览器)session.cookie_path指定要设定会话Cookie的路径,默认为“/”session.cookie_domain指定要设定会话Cookie的域名,默认为无session.cookie_secure指定是否仅通过安全连接发送Cookie,默认为offsession.cookie_httponly指定是否仅通过HTTP访问Cookie,默认为offphp.ini中关于Session的配置项:4.3.6Session的配置通过session_start()函数配置Session:session_start(['name'=>'MySESSID']);注意:session_start()函数对配置项的修改只在PHP脚本的运行周期内有效,不影响php.ini中的原有设置。4.4图像处理4.4.1开启GD扩展

先定一个小目标!掌握GD扩展的开启方法,能够动手完成GD扩展的开启4.4.1开启GD扩展开启GD扩展:在PHP的配置文件php.ini,找到“;extension=gd2”,去掉分号“;”。extension=gd2查看开启结果:重启Apache使配置生效,通过phpinfo()函数查看GD库是否开启成功。4.4.2常用图像处理函数

先定一个小目标!掌握常用图像处理函数的使用,能够实现图像的处理4.4.2常用图像处理函数函数作用imagecreatetruecolor()创建指定宽高的真彩色空白画布图像imagecolorallocate()为画布分配颜色imagefill()为画布填充颜色imagestring()将字符串写入到画布中imagettftext()将文本写入到画布中imageline()在画布中绘制直线imagecreatefromjpeg()创建JPEG格式的图像(1/2)4.4.2常用图像处理函数函数作用imagecreatefrompng()创建PNG格式的图像imagecopymerge()合并两个图片imagecopyresampled()复制一部分图像到目标图像中imagepng()输出PNG格式的图像imagejpeg()输出JPEG格式的图像imagedestory()销毁图像getimagesize()获取图像的大小(2/2)4.4.3【案例】制作验证码

先定一个小目标!掌握制作验证码案例的实现,能够动手完成验证码功能的代码编写4.4.3【案例】制作验证码需求分析在有数据输入的功能开发中,如果恶意向服务器提交数据,那么网站会产生大量的脏数据,使用验证码成为一种防御手段。通过图像处理函数实现制作验证码的功能。4.4.4【案例】生成水印图片

先定一个小目标!掌握生成水印图片案例的实现,能够动手完成生成水印图片功能的代码编写4.4.4【案例】生成水印图片需求分析在项目开发时,考虑到网站中所上传的图片不被他人盗用,对用户上传的图片进行添加水印标记的处理,根据原图的路径,找到图片资源,完成添加水印的功能。4.4.5【案例】制作缩略图

先定一个小目标!掌握制作缩略图案例的实现,能够动手完成生成缩略图功能的代码编写4.4.5【案例】制作缩略图需求分析在项目开发中,为了解决用户上传图片大小不一的问题,需要对用户上传的图片进行相应的处理,可以让其在指定大小的地方显示。制作缩略图,是将原图放到一个固定大小的图片资源里,形成一张新的图片,称之为缩略图。通过图像处理函数实现制作缩略图的功能。4.5目录和文件操作4.5.1目录操作

先定一个小目标!掌握目录操作,能够实现目录的创建、删除、重命名以及读取操作4.5.1目录操作boolmkdir(string$pathname[,int$mode=0777[,bool$recursive=false[,resource$context]]])使用mkdir()函数创建目录,该函数执行成功返回true,失败返回false。创建目录语法格式$pathname表示要创建的目录地址,地址的格式可以是绝对路径也可以是相对路径;$mode指定目录的访问权限(用于Linux环境),默认为0777;$recursive指定是否递归创建目录,默认为false。4.5.1目录操作mkdir('upload');使用mkdir()函数创建目录,该函数执行成功返回true,失败返回false。mkdir()函数使用示例创建目录4.5.1目录操作使用rmdir()函数删除目录,该函数执行成功返回true,失败返回false。删除目录boolrmdir(string$dirname[,resource$context])语法格式使用示例rmdir('upload');注意:删除的目录不存在,会删除失败,并提示Warning错误。删除非空目录时,同样也会删除失败并提示Warning错误,只有先清空里面的文件,才能够删除目录。4.5.1目录操作使用rename()函数实现目录或文件的重命名,该函数执行成功返回true,失败返回false。重命名目录boolrename(string$oldname,string$newname[,resource$context])语法格式$oldname表示要重命名的目录$newname表示新的目录名称4.5.1目录操作mkdir('upload');rename('upload','uploads');使用rename()函数实现目录或文件的重命名,该函数执行成功返回true,失败返回false。重命名目录rename()函数使用示例4.5.1目录操作读取目录两种方式:一种是使用scandir()函数获取目录下的所有文件名;另外一种方式是使用opendir()函数获取资源,然后使用readdir()函数进行访问。读取目录boolscandir(string$directory[,int$order,resource$context])scandir()函数语法格式$directory表示要查看的目录$order规定排列排序,默认是0,表示按字母升序排列4.5.1目录操作$dir_info=scandir('./');foreach($dir_infoas$file){ echo$file.'<br>';}使用scandir()函数查看当前目录下的所有内容:读取目录scandir()函数使用示例4.5.1目录操作opendir()函数用于打开一个目录句柄,readdir()函数从目录句柄中读取条目。读取目录resourceopendir(string$path[,resource$context])opendir()函数语法格式$path表示要打开的目录路径,函数执行成功返回目录句柄的resource,失败返回falseresourcereaddir([resource$dir_handle])readdir()函数语法格式$dir_handle表示已经打开的目录句柄资源,函数执行成功返回文件名称,失败返回false4.5.1目录操作$resource=opendir('./');$file='';while($file=readdir($resource)){echo$file.'<br>';}closedir($resource);使用opendir()函数和readdir()函数读取目录中的内容:读取目录opendir()函数和readdir()函数使用示例4.5.1目录操作函数作用boolis_dir(string$filename)判断给定的文件名是否是一个目录getcwd()若成功会返回当前目录,失败则返回falserewinddir(resource

$dir_handle

)将打开的资源指针重置到目录的开头boolchdir(string

$directory)改变当前的目录,若成功会返回true,失败则返回false路径的有效性:为了保证代码的严谨性,通常会使用系统函数来判断,常用判断函数:4.5.2文件操作

先定一个小目标!掌握文件操作,能够实现文件的打开、删除、修改、重命名以及读取操作4.5.2文件操作resourcefopen(string$filename,string$mode[,bool$use_include_path=false[,resource$context]])fopen()函数:打开文件,该函数执行成功后,返回资源类型的文件指针,用于其他操作。打开文件fopen()函数语法格式$filename表示打开的文件路径,可以是本地文件,也可以是HTTP或FTP协议的URL地址;$mode表示文件打开的模式。4.5.2文件操作模式说明r只读方式打开,将文件指针指向文件头r+读写方式打开,将文件指针指向文件头w写入方式打开,将文件指针指向文件头并将文件大小截为0w+读写方式打开,将文件指针指向文件头并将文件大小截为0a写入方式打开,将文件指针指向末尾a+读写方式打开,将文件指针指向末尾x创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则fopen()调用失败,返回false,并生成E_WARNING级别的错误信息x+创建并以读写方式打开,其他行为和“x”相同fopen()函数常用的文件打开模式:打开文件4.5.2文件操作使用fopen()函数打开文件://只读方式打开,不会创建文件,文件不存在会提示Warning信息$f1=fopen('test1.html','r');$f2=fopen('test2.html','w');//写入方式打开,文件不存在自动创建fclose($f1);fclose($f2);fopen()函数使用示例打开文件4.5.2文件操作删除文件unlink()函数:删除文件,该函数执行成功后成功返回值为true,失败返回false。boolunlink(string$filename[,resource$context])unlink()函数语法格式4.5.2文件操作使用unlink()函数删除文件。unlink('./test2.html');unlink()函数使用示例删除文件4.5.2文件操作修改文件fwrite()函数:修改文件内容。intfwrite(resource$handle,string$string[,int$length])fwrite()函数语法格式$handle表示文件指针$string表示要写入的字符串$length表示指定写入的字节数,如果省略,表示写入整个字符串。4.5.2文件操作使用fwrite()函数修改文件内容。$f3=fopen('test3.html','w');fwrite($f3,'<html><body>Helloworld<body></html>');fclose($f3);fwrite()函数使用示例修改文件4.5.2文件操作重命名文件rename()函数:实现文件重命名。提示:rename()函数的使用在目录操作章节已经讲解,见P52~P53。4.5.2文件操作读取文件fread()函数:读取文件内容,返回读取到的内容,读取失败返回false。stringfread(resource$handle,int$length)fread()函数语法格式$handle表示文件指针$length指定读取的字节数4.5.2文件操作使用fread()函数读取文件内容。$filename='test3.html';$f3=fopen($filename,'r');$data=fread($f3,filesize($filename));echo$data;//输出内容:<html><body>Helloworld<body></html>fclose($f3);fread()函数使用示例计算文件大小读取文件4.5.2文件操作file_get_contents()和file_put_contents()函数file_get_contents()函数:将文件的内容全部读取到一个字符串中。stringfile_get_contents(string$filename[,bool$use_include_path=false[,resource$context[,int$offset=0[,int$maxlen]]]])file_get_contents()函数语法格式$filename指定要读取的文件路径4.5.2文件操作file_put_contents()函数:写入内容,成功返回写入到文件内数据的字节数,失败返回false。intfile_put_contents(string$filename,mix$data[,int$flags=0[,resource$context]])file_put_contents()函数语法格式$filename指定要写入的文件路径;$data指定要写入的内容;$flags指定写入选项,使用常量FILE_APPEND表示追加写入。file_get_contents()和file_put_contents()函数4.5.2文件操作$filename='test3.html';$content=file_get_contents($filename);echo$content;//输出内容:<html><body>Helloworld<body></html>//文件内容不会改变,覆盖原文件内容$str='<html><body>Helloworld<body></html>';file_put_contents($filename,$str);//追加内容file_put_contents($filename,$str,FILE_APPEND);函数使用示例file_get_contents()和file_put_contents()函数4.5.3【案例】递归遍历目录

先定一个小目标!掌握递归遍历目录案例,能够编写代码完成目录的递归遍历4.5.3【案例】递归遍历目录需求分析递归:指一个函数在其函数体内调用自身的过程,这种函数称为递归函数。递归需要有递归点和递归出口。递归点:当需要解决的问题与当前函数解决的问题相同时,进行递归调用。递归出口:当没有再需要解决的问题时,结束递归。

以遍历目录下的所有文件为例,获取根目录的文件列表后,从列表中找到目录的地址,根据该地址再次调用函数,获取子目录下的文件。4.6表单传值4.6.1表单传值方式

先定一个小目标!熟悉表单传值方式,能够利用GET方式和POST方式进行表单传值4.6.1表单传值方式<formaction="表单提交地址"method="post">

<!--表单内容--></form>GET方式POST方式使用GET方式提交表单,表单数据会加入到URL中如:http://localhost/index.php?id=1&type=2表单传值:实现动态网站非常重要的一步,不仅能够实现用户的数据提交,还能帮助用户实现动态数据定制。表单传值示例代码使用POST方式提交表单,可以根据用户指定的编码方式提交数据,保证数据的安全性4.6.2接收表单数据

先定一个小目标!熟悉表单数据的接收,能够利用超全局变量接收表单数据4.6.2接收表单数据变量名说明$_GET接收GET方式提交的数据$_POST接收POST方式提交的数据$_REQUEST接收GET和POST方式提交的数据接收表单数据:在服务端使用超全局变量接收表单数据。4.6.3表单提交数组值

先定一个小目标!熟悉如何使用表单提交数组值,能够实现表单中的复选框数据的提交和接收4.6.3表单提交数组值<formaction="表单提交地址"method="post">

<inputtype="checkbox"name="hobby[]"value="basketball"/>篮球

<inputtype="checkbox"name="hobby[]"value="football"/>足球

<inputtype="checkbox"name="hobby[]"value="vollyball"/>排球

<inputtype="submit"value="提交"></form>表单提交数组:将表单相同元素的name设置成数组的形式即可,表单将会以数组的形式提交。设置表单示例代码4.6.3表单提交数组值var_dump($_POST);//输出结果array(1){

["hobby"]=>array(2){

[0]=>string(10)"basketball"

[1]=>string(8)"football"

}}接收表单提交的数组数据:当选择“篮球”和“足球”两个选项时,接收并输出复选框的值。接收表单示例代码4.6.4单文件上传

先定一个小目标!掌握单文件的上传,能够编写代码完成单文件的上传4.6.4单文件上传<formaction="表单提交地址"method="post"enctype="multipart/form-data">

<inputtype="file"name="file"/>

<inputtype="submit"value="上传"/></form>单文件上传:设置表单的enctype属性指定表单数据的编码方式,将其设为multipart/form-data。示例代码4.6.4单文件上传接收上传文件的信息:使用超全局变量$_FILES来获取。0102030405tmp_mame:文件被上传后存储在服务器端的临时路径。上传的临时目录可以在php.ini的upload_tmp_dir中指定error:文件上传相关的错误代码name:客户端文件的原名称type:文件的MIME类型,需要浏览器提供该信息的支持,如“image/gif”size:上传文件的大小,单位为字节$_FILES数组4.6.4单文件上传代码常量说明0UPLOAD_ERR_OK没有错误发生,文件上传成功1UPLOAD_ERR_INI_SIZE上传的文件超过了php.ini中upload_max_filesize选项限制的值2UPLOAD_ERR_FORM_SIZE上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值3UPLOAD_ERR_PARTIAL只有部分文件被上传4UPLOAD_ERR_NO_FILE没有文件被上传6UPLOAD_ERR_NO_TMP_DIR找不到临时目录7UPLOAD_ERR_CANT_WRITE文件写入失败文件上传错误代码:4.6.4单文件上传将临时文件保存到指定的目标文件地址:使用move_uploaded_file()函数保存文件。if(isset($_FILES['upload'])){

if($_FILES['upload']['error']!==UPLOAD_ERR_OK){

exit('上传失败!');

}

$save='./uploads/'.time().'.dat';

if(!move_uploaded_file($_FILES['upload']['tmp_name'],$save)){

exit('上传失败,无法将文件保存到指定位置!');

}

echo"上传成功!";}示例代码自动生成文件名4.6.5多文件上传

先定一个小目标!掌握多文件的上传,能够编写代码完

温馨提示

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

评论

0/150

提交评论