五月花电子商务PHP5教程讲师刘林2005.5

上传人:汽*** 文档编号:568249889 上传时间:2024-07-23 格式:PPT 页数:311 大小:1.55MB
返回 下载 相关 举报
五月花电子商务PHP5教程讲师刘林2005.5_第1页
第1页 / 共311页
五月花电子商务PHP5教程讲师刘林2005.5_第2页
第2页 / 共311页
五月花电子商务PHP5教程讲师刘林2005.5_第3页
第3页 / 共311页
五月花电子商务PHP5教程讲师刘林2005.5_第4页
第4页 / 共311页
五月花电子商务PHP5教程讲师刘林2005.5_第5页
第5页 / 共311页
点击查看更多>>
资源描述

《五月花电子商务PHP5教程讲师刘林2005.5》由会员分享,可在线阅读,更多相关《五月花电子商务PHP5教程讲师刘林2005.5(311页珍藏版)》请在金锄头文库上搜索。

1、五月花-电子商务PHP5教程讲师:刘林2005.5Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望本章主要介绍PHP(PersonalHypertextPages或者PHPHypertextPreprocessor)的历史及功能,并将PHP和其他CGI界面进行比较,使大家对PHP有初步的认识。首先介绍PHP的诞生背景以及基本概况,接下来介绍PHP的一些特性,最后通过将PHP与其他脚本语言进行比较,使大家进一步了解PHP。学习完本章后,要求大家能对PHP有一个概括的了解。1、简介:19

2、94年,RasmusLerdorf(劳思莫斯.拉道夫)为了创建他的在线简历而创造了“个人主页工具”(PersonalHomePageTools)。在其在线简历网站的开发中,RasmusLerdorf首次提出了PHP程序设计语言的概念。1995年6月,RasmusLerdorf在Usenet新闻组comp.infosystems.www.authoring.cgi上发布了PHP1.0声明及源码。1996年4月,RasmusLerdorf在Usenet新闻组comp.infosystems.www.authoring.cgi上发布了PHP第二版声明及源码。相比PHP1单纯的标签置换代码,PHP第二

3、版含有了可以处理更复杂的嵌入式标签语言的解析程序。1997年,TelAviv公司的ZeevSuraski(苏拉斯基)和AndiGutmans(格特曼斯)从Usenet新闻组中获取了PHP2.0源代码,并自愿重新编写了底层的解析引擎,并进行了源码发布,由此其他很多人也自愿加入了PHP的其它部分的工作,从此PHP成为了真正意义上的开源项目。1.1PHP简介1998年6月,PHP发布了PHP3.0声明。发布以后,用户数量真正开始了飞涨。2000年5月22日,PHP4.0发布。该版本的开发是由希望对PHP的体系结构做一些基本改变的开发者推动的,这些改变包括将语言和Web服务器之间的层次抽象化,并且加入

4、了线程安全机制,加入了更先进的两阶段解析与执行标签解析系统。这个新的解析程序依然由ZeevSuraski和AndiGutmans编写,并且被命名为Zend引擎。2004年7月13日,PHP5.0发布。该版本以Zend引擎II为引擎,并且加入了新功能如PHPDataObjects(PDO)。PHP是一种服务器端的脚本语言。它和HTML一样,是一种编写网页的脚本语言,只是PHP是一种服务器端的语言,它保存在服务器上,客户端需要浏览器支持,当客户端通过浏览器请求某个PHP时,首先服务器要对它进行处理,处理完毕后才发送最后的处理结果到客户端浏览器;而HTML则不需要服务器端的解释过程。PHP与ASP相

5、比,PHP开放源代码并可跨越平台,PHP可以运行在Windows及Linux操作系统下,而ASP只能运行在Windows平台下。PHP不需要任何预先处理就可快速反馈结果,它消耗的资源更少,当PHP作为ApacheWeb服务器的一部分时,运行代码不需要调用外部二进制程序,服务器不需要承担任何额外的负担。2、一个简单的PHP文件:无标题文档下面的输出来自于PHP代码在这个文档中,大部分都是我们非常熟悉的HTML代码,只是这一行比较特别,它就是PHP代码。这段程序的执行过程是:当客户端请求这个PHP文档时,服务器端调用这个文件。因为它是.PHP文件,服务器首先调用PHP解释器对这个文件进行处理。处理

6、完毕,把最后的结果HTML页面发送到客户端浏览器中,客户端的用户就可以看到最后的执行结果了。输出到浏览器的HTML代码为:无标题文档下面的输出来自于PHP代码helloworld由此可见,PHP利用程序设计的语法来控制HTML代码的生成与输出,从而给网站注入了动态的成分。PHP提供了许多功能,用于完成功能复杂的动态网站设计与B/S模式软件的开发。PHP的语法格式主要借用于C或者Java语言的语法格式。1、PHP中任何变量不需要事先声明,可以方便的建立数组。2、PHP支持面向对象的编程。3、PHP有丰富的功能函数库。4、PHP是一个免费的开放源代码的脚本语言。5、PHP支持多种方式代码嵌套。6、

7、PHP支持多种数据库,PHP特别适合与MySql数据库结合架构中小型电子商务网站,PHP支持dBase、Infomix、mSQL、MSSQLSERVER、MySQL、Sybase、Orale、ODBC等数据库。对于每一种数据库,PHP都有相应的函数来处理与数据库的通信和对数据库的操作。7、PHP支持多种通信协议,支持与电子邮件相关的POP3协议及其他相关网络协议。8、PHP具有极强的兼容性,可以非常轻松的移植到不同的操作系统上。9、PHP还支持图形处理、文件处理等功能。1.2PHP的功能及特点1.3PHP与ASP脚本语言的比较语言名称PHPASP操作系统均可Win32Web服务器数种IIS执行

8、效率快快稳定性佳中等开发时间短短修改时间短短程序语言PHPVBScript网页结合佳佳学习门槛低低函数支持多少系统安全佳极差改版速度快慢本章主要介绍了PHP5.0的安装方法。PHP不仅可以在Linux下运行,还可以在Windows下运行,本章对Linux部分的安装简略带过。主要集中在WindowsXP/2003下的安装。Web服务器采用Apache2.0.54服务器进行。(略)2.1Linux系统下安装PHP2.2WindowsXP/2003系统下安装PHP相关文件php-5.0.4-Win32.zip压缩包,apache_2.0.54-win32-x86-no_ssl.msi安装包。2.2.

9、1基于Apache服务器的安装PHP有两种安装模式。一种是CGI模式,主要利用php-cgi.exe或php-win.exe文件对PHP脚本文件进行解释执行;另一种是SAPI(模块)模式,在该模式中将PHP做为模块方式运行,并利用利用php5apache2.dll或php5isapi.dll模块对PHP脚本文件进行解释执行。CGI模式的特点是稳定安全;SAPI模式则可以大大提高服务器的效率,并且可以提供一些新的功能。1、安装PHP:1)、将php-5.0.4-Win32.zip压缩包解压,然后复制到C:并更名为C:PHP52)、拷贝C:PHP5php.ini-dist文件到X:WINNT下,并

10、更名为php.ini3)、打开php.ini进行参数修改,把extension_dir设置为extension_dir=C:/php5/ext4)、在php.ini配置文件中选择运行PHP时需要加载的模块。将php.ini文件中下面格式的行前的;去掉以加载相应的模块,注:加载模块不正确将会出错extension=php_bz2.dllextension=php_cpdf.dllextension=php_crack.dll2、安装并配置Apache服务器:1)、Apache下CGI模式的安装(CGI模式):a、在安装Apache之前停止IIS的80端口的站点。b、执行apache_2.0.54

11、-win32-x86-no_ssl.msi安装包,在安装过程中对domain域名选择为localhost计算机名选择为localhost电子邮箱为任意,并选择安装为80端口的Web站点,并安装在C:Apache下。c、安装完成重新启动计算机,找到C:ApacheApache2conf下的httpd.conf文件,打开并修改:在ScriptAlias段,增加以下行ScriptAlias/PHP5/“C:/php5/”在AddType段,增加以下行AddTypeapplication/x-httpd-php.phpActionapplication/x-httpd-php/PHP5/php-cgi

12、.exe“d、然后保存httpd.conf,并重新启动Apache服务器2)、将PHP作为Apache模块的安装(SAPI模式):a、b步骤同CGI模式的安装。c、安装完成重新启动计算机,找到C:ApacheApache2conf下的httpd.conf文件,打开并修改:在AddType段,增加以下行AddTypeapplication/x-httpd-php.php找到LoadModule段,增加以下行LoadModulephp5_modulec:php5php5apache2.dlld、然后保存httpd.conf,并重新启动Apache服务器3)、Apache配置文件httpd.conf

13、的其它配置选项:a、增加缺省文档找到DirectoryIndex行,将其修改为:DirectoryIndexindex.htmindex.phpb、修改网站的端口号:找到Listen80行,将其修改为:Listen8080并找到ServerNamelocalhost:80行,将其修改为:ServerNamelocalhost:8080c、修改网站的根目录:找到DocumentRoot“C:/Apache/Apache2/htdocs”行,将其修改为:DocumentRoot“D:/myPHP”相关文件php-5.0.4-Win32.zip压缩包。1)、IIS下CGI模式的安装(CGI模式略):

14、a)、在WindowsXP/2003下,双击控制面板窗口中的管理工具图标,打开管理工具窗口。在窗口中双击Internet服务管理器图标,打开Internet信息服务窗口。单击服务器左边的节点将其展开,然后右击相应Web站点选项,从打开的快捷菜单中选择属性命令。b)、在弹出的窗口中选择主目录标签,单击配置按钮,在打开的应用程序配置窗口中,选择应用程序映射标签c)、单击添加按钮,弹出添加/编辑应用程序扩展名映射对话框,在可执行文件文本框中通过浏览按钮选择php-win.exe所在的文件名及路径。在扩展名文本框中输入php文件的扩展名”.php”。选中脚本引擎复选框。d)、单击确定,关闭IIS服务器

15、窗口,然后重新启动IIS服务即可。2.2.2基于IIS服务器的安装2)、IIS下SAPI模式的安装(SAPI模式):a)、在WindowsXP/2003下,双击控制面板窗口中的管理工具图标,打开管理工具窗口。在窗口中双击Internet服务管理器图标,打开Internet信息服务窗口。单击服务器左边的节点将其展开,然后右击相应Web站点选项,从打开的快捷菜单中选择属性命令。b)、在弹出的窗口中选择ISAPI筛选器标签,单击添加按钮,弹出筛选器属性对话框,在筛选器名称处输入PHP,在可执行文件文本框中通过浏览按钮选择php5isapi.dll所在的文件名及路径。c)、在弹出的窗口中选择主目录标签

16、,单击配置按钮,在打开的应用程序配置窗口中,选择应用程序映射标签,单击添加按钮,弹出添加/编辑应用程序扩展名映射对话框,在可执行文件文本框中通过浏览按钮选择php5isapi.dll所在的文件名及路径。在扩展名文本框中输入php文件的扩展名”.php”。选中脚本引擎复选框。d)、单击确定,关闭IIS服务器窗口,然后重新启动IIS服务即可。2.3测试PHP安装是否成功然后在对应站点的根目录下创建一个文件index.php,内容为:通过浏览器浏览该文件index.php,如果显示了PHP的版本及相关信息,说明在Apache或IIS中已经成功配置了PHP。2.4PHP配置文件相关参数设置PHP的配置

17、文件为php.ini,该文件的存放路径为X:Windows或X:WINNT,PHP要区分大小写。如果PHP被配置为CGI模式,则PHP在每次启动时都会读取该配置文件。如果PHP被配置为服务器模块(SAPI模式)模式,则在Web服务器启动执行时就会读取该配置文件,之后就不再读取,因此在这种情况下,每次修改PHP配置文件,都需要重新启动Web服务器。php.ini文件的语法非常简单。以分号开头的行在服务器读取时将被忽略(称之为注释),每行的格式都为:配置选项名称=值。其中配置选项名称大小写是有区别的,因此在进行配置修改时必须注意选项的大小是否保持一致。值可以是字符串、数字、PHP常数、布尔常数(O

18、n,Off,True,False,Yes,No,None)、或表达式。要查看目前PHP的系统配置,在PHP页面中调用并执行phpinfo()函数即可。PHP中常用的配置选项:1、asp_tags=布尔常数(OnOff)配置PHP是否启用ASP脚本块标记方法做为PHP代码块标记方法。如果设置为Off,则允许标记可以作为PHP脚本代码块的标记方法。2、short_open_tag=布尔常数(OnOff)配置PHP是否使用做为PHP代码块标记方法。如果设置为Off,则只有标记可以作为PHP代码块的标记方法。强烈建议设置该值为On。3、extension_dir=字符串配置扩展功能函数库的路径,例”C

19、:php5ext”4、extension=字符串配置PHP启动时所要载入的扩展功能函数库。5、max_execution_time=整数配置PHP程序最长执行的时间,单位:秒。6、memory_limit=整数配置PHP程序最多使用的内存空间大小。7、session.save_handler=files配置Session变量的存储方式,files表示以文件方式存储Session数据。8、session.name=PHPSESSID配置Session中SessionID所使用的Cookie名称,默认值为PHPSESSID。9、session.auto_start=0配置Session是否自动打开

20、,默认值为0(否)。10、upload_max_filesize=2M配置上传文件的最大大小。11、precision=12设置浮点数据的小数点后有效位数。12、register_globals=Off是否注册全局变量,当注册全局变量设置为On后,访问GET、POST、Cookie等变量时,可以直接使用$变量名来访问,不推荐这种方式。13、variables_order=EGPCS变量的优先顺序,从低到高。E-代表环境变量G-GET变量P-POST变量C-Cookie变量S-Server变量本章需要掌握的内容:PHP代码在HTML中的嵌入形式,PHP语句的格式,程序注释,包含文件。3.1一个简

21、单的程序:无标题文档说明:n代表换行,语句结束需要;3.2PHP代码在HTML中的嵌入形式:格式1:此格式必须将php.ini文件中short_open_tag的值设置为On格式2:常用的格式格式3:echo(“这是类似JavaScript及VBScript语法的PHP语言嵌入范例n”);格式4:此格式必须将php.ini文件中asp_tags的值设置为On才能使用3.3PHP语句结束符:语句结束必须使用;3.4程序注释:1、/注释一行2、/*/该注释用于注释一段,注:不能进行嵌套3.5包含文件:类似于asp中的1、require或者require_once:该函数包含的文件会成为程序的一部分

22、,所以一般在PHP程序的最前面开始包含所需要的文件,应该指定正确的路径。2、include或者include_once:该函数一般是放在流程控制的处理部分。PHP程序在读到include的文件时,才将该文件的内容包含进来。本章要求掌握:数值类型,常量,变量,PHP数组,运算符的相关知识。4.1数值类型:4.1.1数字1)十进制数:例如:123-十进制整数123.34-十进制浮点数2)八进制数:例如:0433)十六进制数:例如:0x23数制转换函数:1、bindec函数:功能:二进制数十进制数的转换格式:bindec(“二进制数”)返回:数值,十进制数2、decbin函数:功能:十进制数二进制数

23、的转换格式:decbin(十进制数)返回:字符串,字符串类型的二进制数3、octdec函数:功能:八进制数十进制数的转换格式:octdec(“八进制数”)返回:数值,十进制数4、decoct函数:功能:十进制数八进制数的转换格式:decoct(十进制数)返回:字符串,字符串类型的八进制数5、hexdec函数:功能:十六进制数十进制数的转换格式:hexdec(“十六进制数”)返回:数值,十进制数6、dechex函数:功能:十进制数十六进制数的转换格式:dechex(十进制数)返回:字符串,字符串类型的十六进制数7、gettype函数:功能:获取变量的数据类型格式:gettype(变量)返回:字符

24、串,变量的数据类型例:8.base_convert(变量,进制,要转换进制)例:$bin=“10011”;/二进制echobase_convert($bin,2,16);/把二进制数$bin转换为16进制数例:?php$int=54;$double=54.00;echo变量int的类型是.gettype($int).。;echo变量double的类型是.gettype($double).。;$int=dechex($int);echoint被转化为十六进制的数值:.$int.;?4.1.2文本1、转义字符:n-换行r-回车t-制表符$-美元符号-反斜杠-单引号(用在单引号字符串中)”-双引号(

25、用在双引号字符串中)2、单引号字符串:单引号字符串中不允许出现变量例:helloworldhelloworldhelloworldJohnsaid,”Giftsaregreat.”3、双引号字符串:双引号字符串中允许出现变量例:“Perhapseveryonerememberslove.”“Johnsaid,”Giftsaregreat.”“Johnsaid,Giftsaregreat.”4、反引号字符串:(用于执行一个操作系统命令)反引号字符串中允许出现变量例:?phpecho“查看C:的文件n”;echodirc:;echonetsendDSWN12“大家好”;echo“”;?1、_FIL

26、E_这个内置常量代表PHP文件名,若引用文件(使用require或include),则在引用文件内的该常量为引用文件名。例:test.php文件内容无标题文档4.2常量:4.2.1PHP预定义常量2、_LINE_:这个内置常量返回当前PHP页面中脚本(包括HTML代码行和PHP注释行)行的行数。若引用文件(使用require()或include(),则返回在引用文件内的PHP脚本的行数。例test.php文件内容无标题文档3、PHP_VERSION:返回PHP程序的版本。例test.php文件内容无标题文档4、PHP_OS:返回执行PHP解释器的操作系统名称test.php文件内容无标题文档5

27、、TRUE:逻辑真(true)6、FALSE:逻辑假(false)7、E_ERROR:错误常量(1)8、E_WARNING:警告常量(2)4.2.2用户定义常量函数:define(“常量名称”,常量值)常量一旦定义不能修改其值。例:test.php文件内容无标题文档4.3变量:PHP中变量可以放在双引号字符串中例:$myvar=”aa”;echo”ddd$myvar”;也是正确的4.3.1预定义变量查看PHP的预定义变量test.php文件内容无标题文档预定义变量的使用方法有两种:1)使用$全局变量名,要采用这种方式使用服务器变量或环境变量,应该修改php.ini文件中register_glo

28、bals(注册全局变量选项)=On,2)使用$HTTP_SERVER_VARS“全局变量名”,即使register_globals=Off,也可以使用这种方法。1、Apache服务器变量:1)SERVER_NAME:当前运行PHP脚本所在的服务器名字,如果脚本是在虚拟站点上运行,该值就是虚拟站点名。2)REQUEST_METHOD:获取对应页面所使用的请求方法(POST、GET、HEAD、PUT等)3)QUERY_STRING:获取对应页面所采用的请求字符串4)DOCUMENT_ROOT:当前执行的PHP脚本的文档根目录,也就是Apache服务器配置文件中的DocumentRoot配置项的值5

29、)HTTP_HOST:当前请求中Host的内容6)HTTP_REFERER:把浏览器引导到该页的页面地址7)HTTP_USER_AGENT:当前请求中User_Agent的值,它存储着浏览器类型8)REMOTE_ADDR:浏览该网页的客户端IP地址9)SERVER_PORT:Web服务器与客户端通讯的端口号,默认为80端口,如果使用SSL通讯,则为服务器上所定义的SSL端口号例:无标题文档2、环境变量:Windows2000下Path:环境变量搜索路径,将在这此路径中搜索文件SystemRoot:Windows2000系统安装目录ComSpec:操作系统命令解析文件cmd.exe文件的路径PA

30、THEXT:Path路径中要搜索的文件的扩展名例:无标题文档?phpecho$_ENV“Path”.“”;echo$HTTP_ENV_VARS“SystemRoot”.“”;?3、PHP自身定义变量:$HTTP_COOKIE_VARS:通过HTTPCookies传递给脚本的一个由变量组成的关联数组$HTTP_GET_VARS:通过HTTPGET方法传递给脚本的一个由变量组成的关联数组。$HTTP_POST_VARS:通过HTTPPOST方法传递给脚本的一个由变量组成的关联数组。$HTTP_POST_FILES:存储通过HTTPPOST方法上传的文件的信息。$HTTP_ENV_VARS:从上级传

31、递过来的变量组成的关联数组。$HTTP_SERVER_VARS:从HTTP服务器传送到当前脚本的一组变量组成的关联数组。例:无标题文档?phpforeach($HTTP_ENV_VARSas$vars)echo$vars.“”;foreach($HTTP_SERVER_VARSas$vars)echo$vars.“”;?PHP的变量名称必须由一个美元符号加上其它的字符组成,并区变量名称是区分大小写的。变量名必须遵循PHP的命名规则,PHP的变量名必须以字母或下划线或中文字符开始,变量不用声明就可以使用。在程序中请不要用全局变量做为你程序中的变量来使用。例:1)、变量以传值方式进行赋值:4.3.

32、2用户自定义变量的初始化2)、变量以传递变量(引用)方式进行赋值(引用只能针对变量):&3)、检查变量是否设置的函数isset:格式:isset(变量)功能:如果变量已经设置,则返回true,否则返回false4)、销毁变量的函数unset:格式:unset(变量1,变量2,变量n)功能:用户销毁即删除已经赋值的变量5)、检查变量是否为空的函数empty:格式:empty(变量)功能:若变量值为空值、零值或假值(0,”0”,NULL,false,”),返回true,否则返回false1、PHP脚本中声明一个变量,则该变量可以应用于整个文件(包括require或include所包含的文件中),但

33、函数内部除外。例:test.php:b.php:2、反之被包含文件中声明的变量,可以应用于包含文件中。例:test.php:b.php:4.3.3变量的作用范围3、在函数中声明的变量一般在函数结束后就会消失,不能在函数外部使用;在函数外声明的变量一般不能在函数内使用。例:test.php:4、特殊情况:通过global声明变量为全局变量,使函数外声明的变量可以在函数内使用。例:test.php:?php$a=1;/全局范围页面级变量functionTest()$a=5;echo“使用global之前$a是函数内局部变量,其值为$a=”.$a;global$a;echo“使用global之后$a

34、已经是函数外全局变量,其值为$a=”.$a;$a=12;echo“使用global并修改$a的值之后,其值为$a=”.$a;Test();echo“函数调用结束后$a全局变量的值已经被函数修改,其值为$a=”.$a;?5、特殊情况:通过$GLOBALS“全局变量名”在函数内部使用全局变量。例:test.php:?php$a=1;/全局范围页面级变量functionTest()$a=5;echo$a是函数内局部变量,其值为$a=.$a;echo$GLOBALSa是函数外全局变量$a,其值为$GLOBALSa=.$GLOBALSa;$GLOBALSa=12;echo修改$GLOBALSa的值之后,

35、其值为$GLOBALSa=.$GLOBALSa;Test();echo函数调用结束后$a全局变量的值已经被函数修改,其值为$a=.$a;?所谓活动变量是指一个变量的变量名也是一个变量。例:test.php:?php$a=”hello”;$a=”world”;/$hello=”world”;echo“$a=”.$a;echo“$a=”.$a;echo“$hello=”.$hello;?注意:当活动变量比较复杂时,有可能有多种理解方法,这时需要借助大括号来消除歧义。例1:test.php:?php$a0=”w1”;$a1=”w2”;$a1=”world”;/$w2echo“$a1”;echo$w2

36、;?4.3.4活动变量例2:test.php:?php$a=w1;$a0=hello;$a1=world;echo$a1;echo$w11;?1、HTML表单(GET和POST)HTML表单在HTML中应用最为广泛,在PHP中当表单提交时,表单中的所有域都会自动转变为PHP可用的变量。注意:表单或Get字符串中域的名字的大小。注:PHP配置中选项register_globals设置为On时,可以通过两种方法获取表单提交的值:)$表单变量名)$HTTP_POST_VARS“表单变量名”或$HTTP_GET_VARS“表单变量名”当register_globals设置为Off时,只能通过$HTTP

37、_POST_VARS“表单变量名”或$HTTP_GET_VARS“表单变量名”来获取表单提交过来的值。例:test.php用户名:密码:dotest.php?phpecho“你输入的用户名为:”.$UserId.“”;echo“你输入的密码为:”.$PassWord.“”;?4.3.5外界PHP变量:例2:test.php登录dotest.php?phpecho“你输入的用户名为:”.$UserId.“”;echo“你输入的密码为:”.$PassWord.“”;?2、HTTPCookiesPHP支持HTTPCookies。例如:例:test.php4.4PHP的数组处理:PHP中的数组为关联数

38、组,即由键值对构成的关联数组,其中数组的下标我们称之为键,对应下标的值称之为对应键的值。在PHP中键可以由数字,也可以由字符串构成。4.4.1一维数组:1、直接初始化数组来定义一个一维数组。例:?php$a0=ab3c;$a1=def;echo$a0=.$a0;echo$a1=.$a1;$bfoo=13;$babc=15;echo$bfoo=.$bfoo;echo$babc=.$babc;echo$b0=.$b0;$ccolor=red;$ctaste=sweet;$cshape=round;$cname=apple;$c3=4;echo$ccolor=.$ccolor;echo$ctaste

39、=.$ctaste;echo$cshape=.$cshape;echo$cname=.$cname;echo$c3=.$c3;?2、通过array结构对数组进行初始化,=的使用。例:abc,1=def);echo$a0=.$a0;echo$a1=.$a1;$b=array(foo=13,abc=15);echo$bfoo=.$bfoo;echo$babc=.$babc;$c=array(color=red,taste=sweet,shape=round,name=apple,3=4);echo$ccolor=.$ccolor;echo$ctaste=.$ctaste;echo$cshape=.

40、$cshape;echo$cname=.$cname;echo$c3=.$c3;?3、向数组中追加元素,追加的元素下标为最大值下标加1。例:?php$a0=ab3c;$a1=def;echo$a0=.$a0;echo$a1=.$a1;$a=”ddd”;$a=34;echo$a2=.$a2;echo$a3=.$a3;?php$bfoo=13;$babc=15;echo$bfoo=.$bfoo;echo$babc=.$babc;$bcde=35;echo$bcde=.$bcde;?多维数组就是多个一维数组的组合。1、直接初始化数组来定义一个多维数组。例:?php$a10=ab3c;$afoo1=d

41、ef;$a2bar=ghi;$afoo2=jkl;echo$a10=.$a10;echo$afoo1=.$afoo1;echo$a2bar=.$a2bar;echo$afoo2=.$afoo2;?4.4.2多维数组:2、利用array结构初始化数组来定义一个多维数组。例:array(0=3bc),2=array(bar=3hi),foo=array(1=3ef,2=3kl);echo$a10=.$a10;echo$afoo1=.$afoo1;echo$a2bar=.$a2bar;echo$afoo2=.$afoo2;$afoo=456;echo$afoo3=.$afoo3;?3、多维数组元素的

42、追加,追加的下标为最大值下标加1。例:array(0=3bc),2=array(bar=3hi),foo=array(1=3ef,2=3kl);$afoo56=456;$afoo=“abcd”;echo$afoo56=.$afoo56;?4.5运算符:1、+:将强制转换为数字作加法运算例:2、-:将强制转换为数字作减法运算例:4.5.1算术运算符:3、*:强制转换为数字作乘法运算例:4、/:强制转换为数字作除法运算例:5、%:取余,返回整数例:$a=3;4.5.2赋值运算符=:4.5.3位运算符:1、按位与&:两者同为1,则为1;否则为0例:$a=5;/00000101$b=6;/000001

43、10echo$a&$b;/00000101&00000110=000001002、按位或|:两者有一个为1,则为1;否则为0例:$a=5;/00000101$b=6;/00000110echo$a|$b;/00000101&00000110=000001113、按位异或:两者不相同,则为1;否则为0例:$a=5;/00000101$b=6;/00000110echo$a$b;/00000101&00000110=000000114.5.4逻辑运算符:PHP中任何一个变量(表达式)都可以看作一个逻辑表达式:变量值(表达式)与逻辑值的比较:1)、未赋值(NULL):为假2)、0或者”0”:为假3)

44、、非0值:为真4)、空字符串”:为假5)、非空字符串:为真1、逻辑与$aand$b:两者同为真则为真,否则为假$a=0.4;$b=3;if($aand$b)echo为真;elseecho为假;2、逻辑或$aor$b:两者是有一个为真,则为真,否则为假$a=0.4;$b=3;if($aor$b)echo为真;elseecho为假;3、逻辑异或$axor$b:两者不相同,为真,否则为假$a=0.4;$b=3;if($axor$b)echo为真;elseecho为假;4、逻辑非!$a:逻辑取反,$a为假时,为真;为真时,为假$a=0.4;$b=3;if(!$c)echo为真;elseecho为假;5

45、、逻辑与$a&$b(与and比较,&有更高的优先级):两者同为真则为真,否则为假$a=0.4;$b=3;if($a&$b)echo为真;elseecho为假;6、逻辑或$a|$b(与or比较,|有更高的优先级):两者中有一个为真,则为真,否则为假$a=0.4;$b=3;if($a|$b)echo为真;elseecho为假;4.5.5比较运算符:1、$a=$b(结果相等):$a=4;$b=”4”;if($a=$b)echo结果相等;elseecho结果不等;2、$a=$b(类型相同且结果相等):$a=4;$b=”4”;if($a=$b)echo类型相同且结果相等;elseecho不相同;3、$a

46、!=$b(结果不相等):$a=4;$b=”34”;if($a!=$b)echo结果不相等;elseecho结果相等;4、$a!=$b(类型不相同或结果不相等):$a=4;$b=”34”;if($a!=$b)echo类型不相同或结果不相等;elseecho相等;5、$a$b(小于结果比较):$a=4;$b=”34”;if($a$b(大于结果比较):$a=44;$b=”34”;if($a$b)echo$a大于$b;elseecho$a不大于$b;7、$a=$b(小于等于结果比较):$a=34;$b=”34”;if($a=$b(大于等于结果比较):$a=34;$b=”34”;if($a=$b)ech

47、o$a大于等于$b;elseecho$a小于$b;9、?运算符:格式:(表达式1)?(表达式2):(表达式3)如果表达式1的值为真,则返回表达式2的值,否则返回表达式3的值。例:$a=34;$b=”34”;$c=($a=$b)?$a:$b;echo$a与$b中最大的值是:.$c;4.5.6错误控制运算符:例:4.5.7自增(自减)运算符:1、自增运算符+:例1:?php$a=12;$a+;echo$a.“”;$b=12;+$b;echo$b;?例2:?php$a=12;echo$a+.“”;$b=12;echo+$b;?2、自减运算符-:例1:?php$a=12;$a-;echo$a.“”;$

48、b=12;-$b;echo$b;?例2:?php$a=12;echo$a-.“”;$b=12;echo-$b;?4.5.8字符串连接运算符.:例:?php$str_a=”Thisboxcanhold“.55.items.;echo“$str_a”;$a=”AAA”;$b=”BBB”;$c=$a.$b;echo“$cn”;$d=”abcde”;$e=”fghijk”;echo$d.$e.“”;?4.5.9PHP中其它特殊的运算符:1、$:声明变量$a=13;2、var:在类定义中声明类变量(只能在类定义中使用)例:classMyClassvar$a;3、&:变量引用$a=13;$b=&$a;4、

49、-:对象的方法或属性classMyClassvar$a;functionSetValue($b)$this-a=$b;$v=newMyClass;$v-SetValue(34);print$v-a;5、=:数组的元素赋值6、+=(加等):$a+=3;/等同于$a=$a+37、-=(减等):$a-=3;/等同于$a=$a-38、*=(乘等):$a*=3;/等同于$a=$a*39、/=(除等):$a/=3;/等同于$a=$a/310、%=(余等):$a%=3;/等同于$a=$a%311、.=(点等):$a.=”dd”;/等同于$a=$a.“dd”12、&=(位运算:与等):$a=2;$a&=3;/

50、等同于$a=$a&300000010&00000011=0000001013、|=(位运算:或等):$a=2;$a|=3;/等同于$a=$a|300000010|00000011=0000001114、=(位运算:异或等):$a=2;$a=3;/等同于$a=$a300000001000000011=000000014.5.10运算符的优先顺序:,(逗号运算符)or(逻辑或)xor(逻辑异或)and(逻辑与).=&=|=/=%=+=-=*=?|(逻辑或)&(逻辑与)|&=!=!=+-.*/%!+-new例1:for($a=1,$b=$a*2;$b10;$b+)echo$a.$b.;通过本章的学习

51、要求大家掌握PHP中表达式,分支控制语句,循环控制语句,require和include语句及函数的相关知识。操作数和操作符组合在一起构成表达式。表达式是由一个或多个操作符连接起来的操作数,用来计算一个确定的值。5.1.1简单表达式简单表达式是由一个单一的运算符或一个单一函数调用组成。例:initialize_pricing_rules()$str_first_name=John$arr_first_names=array(John,Marie)5.1.2有副作用的简单表达式例:$int_total_glasses=+$int_number_of_glasses;functionone()glo

52、bal$str_direction_name;$str_direction_name=/dos_data;5.1表达式5.1.3复杂表达式例:(10+2)/count_fishes()*114);iitialize_count(20-($int_page_number-1)*2)5.2分支控制语句5.2.1if语句1、格式1:if(逻辑表达式)语句段;例:$a=3;if($a3)echo$a3)echo$a3;2、格式2:if(逻辑表达式)语句段;else语句段;例:$a=3;if($a3)echo$a=3;3、格式3:if(逻辑表达式)语句段;elseif(逻辑表达式)语句段;else语句段

53、;例:$a=5;if($a3)echo$a4)echo$a4;elseecho3$a=4;5.2.5switch分支语句格式:switch(计算表达式)case值1:语句段;break;case值2:语句段;break;case值n:语句段;break;default:语句段;例1:$a=3;switch($a)case0:echo$a=0;break;case1:echo$a=1;break;case2:echo$a=2;break;case3:echo$a=3;break;default:echo不确定值;例2:$a=0;switch($a)case0:case1:case2:echo$a

54、=0or$a=1or$a=2;break;case3:echo$a=3;break;default:echo不确定值;5.3循环控制语句5.3.1while语句格式:while(逻辑表达式)循环体;例:$i=1;while($i0);5.3.3for语句1、for语句:格式:for(表达式1;表达式2;表达式3)循环体;例1:for($I=1;$I10)break;print$I;例3:$I=1;for(;)if($I10)break;print$I;$I=$I+1;例4:for($I=1;$I$值变量)循环体;例:$a=array(1,2,3,4,5,6,7,8,9,10);foreach(

55、$aas$b=$c)print$a.$b.=.$c.;5.3.4break语句break语句用于结束当前的for、while或switch循环或分支结构,即跳出循环,继续执行循环体下面的语句。例1:$arr=array(one,two,three,four,stop,five);foreach($arras$val)if($val=stop)break;echo$valn;例2:$I=0;while(+$I)switch($I)case5:echoAt5n;break1;case10:echoAt10;quittingn;break2;default:break;5.3.5continue语句

56、不执行continue语句后的所有循环体语句,回到循环判断表达式,进行判断并决定是否继续循环体。例1:$arr=array(one,two,three,four,stop,five);foreach($arras$key=$value)if(!($key%2)continue;echo$value.;例2:$I=0;while($I+5)echo“Outern”;while(1)echo“Middlen”;while(1)echo“Innern”;continue3;echo“Thisnevergetsoutput.n”;echo“Neitherdoesthis.n”;5.4require()

57、语句和include()语句5.4.1require语句格式:require(“文件名”)或require(“url文件名”)require语句的特点:1、将用指定的文件来替换require语句本身。2、如果php.ini配置文件中allow_url_fopen(allow_url_include)选项设置为On(默认设置就为On),则require还可以包含远程服务器上的文件,并可以通过get方式传递参数过去。3、require语句中包含的文件格式应该遵循HTML格式,因此PHP代码也应该使用PHP代码嵌入标记。4、require所包含文件语句中的变量继承require语句所在位置的变量作用

58、域。所有在require语句的位置可以访问的变量,在require语句所包含的文件中都可以访问。如果require语句位于一个函数的内部,那么被包含的文件内的语句都相当于在函数内部。5、return语句(并可返回值)在被包含文件的全局范围中使用时,将导致return语句之后的所有语句不被包含。例1:test.php:无标题文档test2.php:无标题文档?phpfunctionMyFun()return我的函数;return33;echohelloworldn;#用于在当前位置输出helloworld#echofffff;?echo(这是一个PHP语言的嵌入范例n);?phpecho(这是第

59、2个PHP语言的嵌入范例n);?例2:test.php:无标题文档register.php:例3:test.php:无标题文档register.php:例4:test.php:无标题文档config.php:5.4.2include语句include的特点:PHP在每次遇到include时都要进行重新处理,所以可以在条件分支循环等控制语句中采用include来动态包含不同的文件。其它与require相同。例1:test.php:$files=array(first.inc,second.inc,third.inc);for($I=0;$Icount($files);$I+)include($f

60、iles$I);例2:test.php:$retval=include(“test.inc”);echo“文件返回值:”.$retval;test.inc:echo“在return之前n”;if(1)return27;echo“在return之后n”;例3:test.php:无标题文档register.php:5.4.3require_once()语句和include_once()语句利用require_once()或include_once()对多个文件进行包含时,可以有效地避免把同一段代码包含进去从而出现函数或变量重复定义的错误。例1:utiles.inc:functiongoodtea(

61、)return“Oolongteatastesgoods!”;foolib.inc:require(“utiles.inc”);functiongoodtea($var)echo$var;例2:utiles.inc:functiongoodtea()return“Oolongteatastesgoods!”;test.php:require(“utiles.inc”);require(“utiles.inc”);例3:utiles.inc:functiongoodtea()return“Oolongteatastesgoods!”;test.php:require_once(“utiles.i

62、nc”);require_once(“utiles.inc”);例4:test.php:require(“test2.php”);require(“test2.php”);test2.php:无标题文档?phpfunctionMyFun()return我的函数;echohelloworldn;#用于在当前位置输出helloworld#echofffff;?echo(这是一个PHP语言的嵌入范例n);?phpreturn33;echo(这是第2个PHP语言的嵌入范例n);?5.5函数定义函数的格式:function函数名($参数1,$参数2,$参数n)语句段;return$retval;5.5.

63、1返回值1、返回一个值函数可以通过return语句返回值(包括任何数据类型),一个函数中可以通过多个return进行值返回,当函数碰到return时将结束函数的执行。例1:functionsquare($num)return$num*$num;echosquare(4);例2:functionsquare($num)if($num10)return$num*$num;/echo未执行;elsereturn$num*10;/echo未执行;echosquare(4);echosquare(14);2、返回一个数组例1:functionsmall_numbers()returnarray(0,1,

64、2);/list($zero,$one,$two)=small_numbers();/echo$zero.$one.$two;$arr=small_numbers();echo$arr0.$arr1.$arr2;5.5.2参数1、传值方式传递参数默认情况下函数参数是通过传值方式传递的,在函数内部改变参数的值,在函数外部并不会体现出来。例:functionMyFun($b)$b=$b*$b;echo$b.;$a=5;MyFun($a);echo$a;如果我们希望一个函数可以修改其参数,并在外部体现出来,就必须通过引用方式传递参数。2、引用方式传递参数:1)、通过函数定义进行显示声明通过引用方式传

65、递参数例:functionadd_some_extra(&$string)$string.=andsomethingextra.;$str=Thisisastring,;add_some_extra($str);echo$str;2)、在函数调用时通过&为参数变量说明按引用方式传递参数例:functionfoo($bar)$bar.=andsomethingextra.;$str=Thisisastring,;foo($str);echo$str;foo(&$str);echo$str;2、默认值:函数可以按照以下方式为参数定义默认值,默认值必须为常量表达式,函数中默认参数必须位于非默认参数的

66、右侧。例1:functionmakecoffee($type=cappucino)returnMakingacupof$type.n;echomakecoffee();echomakecoffee(espresso);例2:functionmakecoffee($type=acidophilus,$flavour)returnMakingacupof$type$flavour.n;echomakecoffee(raspberry);例3:functionmakecoffee($flavour,$type=acidophilus)returnMakingacupof$type$flavour.n

67、;echomakecoffee(raspberry);5.5.3变量函数PHP中支持变量函数概念:即用户可以将一个函数名赋值给一个变量,并通过在该变量后加()及参数来调用对应的函数。例:functionfoo()echo在foo函数内部n;functionbar($arg=)echo在bar函数内部;参数是$arg.n;$func=foo;$func();$func=bar;$func(test);5.5.4PHP数学函数1、abs-取绝对值格式:intabs(intn)2、round-四舍五入函数格式:floatround(floatn,intd)功能:对浮点数n进行四舍五入到d所指定的位。

68、如果d=0,则取整;d0,则精确到小数点后多少位。3、ceil-返回大于等于数字的最小整数格式:intceil(floatn)4、floor-返回小于等于数字的最大整数格式:intfloor(floatn)5、强制转换-截取整数部分:格式:$变量=(int)数字;6、srand-设置随机种子数格式:srand(intn)功能:设置整数n为随机种子数7、rand-返回随机整数格式:intrand(intmin,intmax)功能:返回=min且=max的随机整数。5.5.5PHP字符串函数1、md5-按md5方式进行字符编码加密函数格式:stringmd5(stringstr)2、strlen-

69、获取字符串长度,一个中文作为两个字符计算格式:intstrlen(stringstr)3、strtolower-转换为小写格式:stringstrtolower(stringstr)4、strtoupper-转换为大写格式:stringstrtoupper(stringstr)5、strchr-获取某字符串第一次出现起的字符串(要包括)格式:stringstrchr(stringhaystack,stringneedle)获取在haystack字符串中第一次出现needle字符串起的字符串,没有找到返回false。例:6、strstr-获取字符串开始到结束的字符串格式:stringstrstr

70、(stringhaystack,stringneedle)获取在haystack字符串首次出现needle字符串开始起到其结束的字符串。没有找到返回false。例:7、strrchr-获取某字符串最后出现起的字符串(要包括)格式:stringstrrchr(stringhaystack,stringneedle)获取在haystack字符串中最后出现needle字符串起的字符串,没有找到返回false。例:8、split-对字符串进行分割,并返回数组格式:arraysplit(stringneedle,stringhaystack)用needle字符串对haystack字符串进行分割,并返回分

71、割后得到的数组。例:$val)echo$val;?9、join-连接数组中元素值成字符串格式:stringjoin(stringglue,arraypieces)将数组pieces中所有元素值用glue字符串间隔,形成新字符串。例:10、htmlentities-将所有字符转换为html字符编码格式:stringhtmlentities(stringstring)例:?php$str=;echohtmlentities($str);?11、htmlspecialchars-将特殊字符转换为html字符编码(&“)格式:stringhtmlspecialchars(stringstring)例:

72、?php$str=;echohtmlspecialchars($str);?12、str_replace-字符串替换格式:stringstr_replace(stringneedle,stringstr,stringhaystack)在haystack字符串寻找needle字符串,并将其替换为str字符串.例:13、substr-取子串函数格式:stringsubstr(stringstring,intstart,intlength)从字符串string的开始位置start取子串,如果加上length表示取这么多个字符,否则将取到字符尾,字符串的起始位置为0。例:14、strpos-寻找某字符

73、串的开始位置格式:intstrpos(stringhaystack,stringneedle,intoffset)寻找needle字符在haystack字符串中的第一次出现的位置,并返回,没有找到返回false,如果指定offset表示从该位置开始寻找。例:15、strrpos-寻找某字符串的结束位置格式:intstrrpos(stringhaystack,stringneedle)寻找needle字符在haystack字符串中的最后一次出现的位置,并返回,没有找到返回false。例:16、ltrim-删除字符串左边的空格格式:stringltrim(stringstr)17、trim-删除字

74、符串首尾的空格格式:stringtrim(stringstr)18、chr-根据ASCII码返回相应的字符格式:stringchr(intascii)19、ord-根据字符返回ASCII码格式:intord(stringc)19、urlencode-将字符串以URL方式进行编码格式:stringurlencode(stringstr)本函数将对中文及特殊字符进行编码。例:?php$ChineseName=通过GET方式传递的中文值;$EncodeStr=urlencode($ChineseName);echo个人资讯;?20、urldecode-还原URL编码字符串格式:stringurlde

75、code(stringstr)例:?php$ChineseName=通过GET方式传递的中文值;$EncodeStr=urlencode($ChineseName);echo个人资讯;echourldecode($EncodeStr);?21、stripslashes-去掉字符串中的多余反斜线格式:stringstripslashes(stringstr)例:22、addslashes将在字符串中的特殊字符前加转义反斜线格式:stringaddslashes(stringstr)例:23、get_magic_quotes_gpc-返回php.ini中魔法引用参数(magic_quotes_gp

76、c)的值格式:boolget_magic_quotes_gpc()如果magic_quotes_gpc的值为On则返回true,否则返回false如果magic_quotes_gpc被关闭,php将不在任何传递的特殊字符前加,由此可能会带来系统的安全问题,如sql注入攻击。5.5.6PHP日期时间函数php.ini配置文件中时区设置,date.timezone=PRC,表示设置为中国时区1、time()-获取当前unix格式时间戳,单位秒格式:inttime()2、date-服务器时间格式化函数格式:stringdate(stringformat,inttimestamp)若有timestam

77、p则对该timestamp进行格式化,否则对当前服务器时间进行格式化format选项:a-am或是pmA-AM或是PMd-几日,二位数字,若不足二位则前面补零;如:01至31D-星期几,三个英文字母;如:FriF-月份,英文全名;如:Januaryh-12小时制的小时;如:01至12H-24小时制的小时;如:00至23g-12小时制的小时,不足二位不补零;如:1至12G-24小时制的小时,不足二位不补零;如:0至23i-分钟;如:00至59j-几日,若不足二位不补零;如:1至31l-星期几,英文全名;如:Fridaym-月份,二位数字,若不足二位则在前面补零;如:01至12n-月份,二位数字,

78、若不足二位则不补零;如:1至12M-月份,三个英文字母;如:Jans-秒;如:00至59S-字尾加英文序数,二个英文字母;如:th,ndt-指定月份的天数;如:28至31U-总秒数w-数字型的星期几,如:0(星期日)至6(星期六)Y-年,四位数字;如:1999y-年,二位数字;如:99z-一年中的第几天;如:0至365例1:3、mktime-返回int时间的函数intmktime(inthour,intminute,intsecond,intmonth,intday,intyear)例:$day=mktime(0,0,0,7,1,1997);4、microtime-获取当前时间的百万分之一秒为

79、单位的时间格式:stringmicrotime()例:5、filemtime-获取文件的最后修改时间格式:intfilemtime(stringfilename)例:6、fileatime-获取文件的最访问时间格式:intfileatime(stringfilename)例:5.5.7PHP其它函数1、getimagesize-取得图片的长宽格式:arraygetimagesize(stringfilename)用于获取GIF、JPEG及PNG三种图片文件的高与宽,第二个参数一般没用。返回数组有四个元素:第一个元素(索引值0)是图片的宽度,第二个元素(索引值1)是图片的高度,第三个元素(索引值

80、2)是图片的格式,其值1为GIF格式、2为JPEG/JPG格式、3为PNG格式。第四个元素(索引值3)为图片的高与宽字串,height=xxxwidth=yyy。例:$val)echo$key.=.$val.;?2、sizeof-等同于count用于获取数组的元素个数格式:intsizeof(arrayarray)=intcount(arrayarray)例:3、header-将相应的HTTP头部信息发送到浏览器格式:intheader(stringstring)例:通过本章学习要求大家掌握面向对象程序设计方法,掌握PHP中类的定义,类的实例化(即对象),PHP的类和对象函数。PHP从Java

81、语言中引进了面向对象的技术。它的面向对象特征允许开发者编写具有特定功能的类,以便于以后的使用。6.1.1面向对象技术简介1、传统的“面向过程的程序设计”方法:在这种“面向过程的程序设计”语言中,将程序抽象为3种基本程序结构:顺序、选择和循环结构,并将程序按功能模块化形成一个一个的过程(函数),最终将所有模块(过程)通过主程序的调用连接在一起构成整个程序。不同应用程序之间在代码重用性方面表现极差,也不利于代码的管理。例如:对于汽车,按传统的“面向过程的程序设计”方法设计的话,需要我们从每个零件开始进行设计构成相应的模块,然后通过主程序将每个零件模块组装起来形成汽车。2、面向对象技术设计方法:面向

82、对象技术设计方法中最基本的概念是类和对象,对象是一个类的实例,对象有具体的特征(属性),有相应的行为(方法),对象一旦构建就有一个唯一标识,对象还可以有事件(如鼠标触发,键盘触发等事件)。对象基于类来创建,类具有“封装性”,“继承性”,“多态性”。例如:同样对于汽车,按面向对象技术方法设计的话,我们把每个零件作为一个对象来对待,最后我们只需将一个一个的对象组装起来就形成了汽车。6.1面向对象程序设计6.2面向对象程序设计方法的基础在PHP中我们可以方便的定义各种功能的类,并对类进行实例化来形成对象。类只有经过实例化才能使用。6.2.1PHP中类的定义方法格式:class类名/类定义内部var$

83、属性1;var$属性2;var$属性n;function方法1()function方法2()function方法n()1、类定义内部$this的含义:指向类本身2、类定义内部属性的访问方法:$this-属性外部:$对象名-属性3、类定义内部函数的访问方法:$this-函数()外部:$对象名-函数()4、类的构造函数:与类名相同的函数,在类被实例化时自动执行。5、类的继承,将继承基类的所有属性和函数:class新类名extends基类6、类的定义一般放在一个单独的文件中,在需要该类时包含进来即可。7、类的实例化方法:$对象名=new类名();$对象名=new类名(值1,值2,.,值n);8、类中

84、成员(属性及函数)的修饰符:1)private-私有的,只能在内部被访问,不会被继承2)public-公共的,可以在内部及外部访问,会被继承还是公共的3)protected-受保护的,不能在外部被访问,可以被继承,并且继承之后仍然是受保护的在PHP中,类属性及方法默认都是public。例1:classCartvar$items;/数组,卡车中货物名称做数组下标,值为货物数量functionadd_item($name,$num)/向卡车中对应货物$artnr增加$num数量$this-items$name+=$num;functionremove_item($name,$num)/从卡车中对应

85、货物$artnr减小$num数量if($this-items$name=$num)$this-items$name-=$num;returntrue;elsereturnfalse;$cart=newCart;/由类创建一个对象$cart,我们通常也称之为类的实例化$cart-add_item(电脑,10);echo$cart-items电脑;例2:由Cart基类派生了一个Named_Cart类,Named_Cart可以看做是Cart更具体的类,它不仅拥有Cart基类所有属性和方法(函数),也拥有自己的属性owner和方法(函数)set_owner。classNamed_Cartextends

86、Cartvar$owner;/卡车的拥有者functionset_owner($name)$this-owner=$name;$ncart=newNamed_Cart;/类的实例化$ncart-set_owner(张三);print$ncart-owner.;$ncart-add_item(电脑,10);print$ncart-items电脑;例3:类中构造函数的使用classAuto_CartextendsNamed_CartfunctionAuto_Cart()$this-add_item(电脑,10);$ncart=newAuto_Cart;/类的实例化$ncart-set_owner(

87、李四);print$ncart-owner.;print$ncart-items电脑;例4:带参数构造函数:classConstructor_CartextendsCartfunctionConstructor_Cart($item=”电脑”,$num=10)$this-add_item($item,$num);$default_cart=newConstructor_Cart;/实例化生成一个对象echo$default_cart-items“电脑”.;$different_cart=newConstructor_Cart(“计算机”,17);/实例化生成另一个对象echo$differen

88、t_cart-items“计算机”;6.3PHP的类和对象函数:1、class_exists:检索类是否存在格式:class_exists(“类名”)例:/classMyClassif(class_exists(MyClass)echoMyClass类存在!;elseechoMyClass类不存在!;2、get_class:返回一个对象所属类的名字格式:get_class(对象)例:classMyClass$cmyclass=newMyClass;echoget_class($cmyclass);3、get_class_methods:返回包含类的所有方法的数组格式:get_class_met

89、hods(“类名”)例:classCartvar$items;/数组,卡车中货物名称做数组下标,值为货物数量functionadd_item($artnr,$num)/向卡车中对应货物$artnr增加$num数量$this-items$artnr+=$num;functionremove_item($artnr,$num)/从卡车中对应货物$artnr减小$num数量if($this-items$artnr$num)$this-items$artnr-=$num;returntrue;elsereturnfalse;$arr=get_class_methods(Cart);foreach($a

90、rras$method)echo$method.;4、get_class_vars:返回包含类的所有属性的数组格式:get_class_vars(“类名”)例:classMyClassvar$a;var$b;var$c;$arr=get_class_vars(MyClass);foreach($arras$key=$prop)echo$key.=.$prop.;5、get_object_vars:返回一个包含对象所有属性的关联数组格式:get_object_vars(对象)例:classMyClassvar$a;var$b;var$c;$obj=newMyClass;$obj-a=1;$obj

91、-b=2;$obj-c=3;$arr=get_object_vars($obj);foreach($arras$key=$prop)echo$key.=.$prop.;6、method_exists:检查对象的方法是否存在格式:method_exists(对象,”方法名”)例:classMyClassvar$a;var$b;var$c;functionsetA($a)$this-a=$a;$obj=newMyClass;if(method_exists($obj,setA)=true)echo方法存在;elseecho方法不存在;7、对象之间的比较:1)、=:如果两个对象属于同一个类,且两个对

92、象对应的属性值相同。则相等,否则不相等。classMyClassvar$a;var$b;var$c;functionsetA($a)$this-a=$a;$obj=newMyClass;$obj-a=1;$obj-b=2;$obj-c=3;$obj1=newMyClass;$obj1-a=1;$obj1-b=2;$obj1-c=3;if($obj=$obj1)echo“相等;elseecho“不相等;2)、=:如果两个对象之间是引用关系,则两个对象相等,否则不相等。classMyClassvar$a;var$b;var$c;functionsetA($a)$this-a=$a;$obj=new

93、MyClass;$obj-a=1;$obj-b=2;$obj-c=3;$obj1=&$obj;if($obj=$obj1)echo“相等;elseecho“不相等;通过本章学习要求掌握MySql数据库的一些基本知识,掌握PHP中对MySql数据库的各种操作函数,能够用MySql数据库作为网站的后台数据库,并能够通过phpMyAdmin对MySql数据库进行操作。PHP中如果需要用到某数据库系统必须在php.ini文件中加载相应数据库系统的扩展模块。MySql数据库中的扩展模块为mysql.dll,对于php5,该文件应该位于x:php5ext文件夹中。一、MySql(mysql-5.0.23-

94、win32)的安装:从网上下载mysql-5.0.23-win32.zip压缩包,解压之后得到一setup.exe文件,双击进行安装。二、MySql数据库服务器的配置:安装时在MySqlServerInstanceConfigurationWizard对话框中可对MySql进行配置。安装完成之后,可通过“开始-程序-MySql-MySqlServer5.0-MySqlServerInstanceConfiguration”程序项进行配置。1、配置方案选择:详细配置、标准配置。2、服务器配置类型:1)DeveloperMachine(开发人员机器):在该机器上会有多个应用程序运行,MySql仅使

95、用最小配额的内存空间。2)ServerMachine(服务器):几个服务器应用程序会运行在上边,对于Web服务器应用程序应该选择该选项,MySql将使用中等内存配额。3)DedicatedMySqlServerMachine(专用MySql服务器):这台服务器的作用将专门用作MySql数据库服务器,在该服务器上不提供其它的服务,仅提供MySql数据库服务,没有象Web服务或Mail服务的其它服务在上面运行,MySql将使用服务器所有可供使用的内存空间。3、数据库类型:1)MultifunctionalDatabase(多功能数据库):2)TransationalDatabaseOnly(仅事务

96、数据库):3)Non-TransactionalDataBaseOnly(仅非事务数据库):4、InnoDB表空间设置:在MySql数据库,每个数据表都对应一个文件。5、同时连接数设置:1)DecisionSupport(DSS)/OLAP:不超过20个连接数。2)OnlineTransactionProcessing(OLTP):可以同时允许最多500个活动连接,适应负荷很重的Web服务器。3)ManualSetting:手工设置。6、设置网络参数:EnableTCP/IPNetworking:是否允许TCP/IP协议,如果不允许则仅允许通过命名管道进行本地连接。设置Tcp/ip端口号:33

97、067、选择MySql缺省字符集:1)StandardCharacterSet(标准字符集设置,使Latin1为缺省字符集):2)BestSupportForMultilingualism(对于多国语言字符集最好支持设置,使utf8成为缺省字符集):3)ManualSelectedDefaultCharacterSet/Collation(用户自定义):在此请选择在此请选择gbk简体中文字符集。简体中文字符集。8、设置Windows安装参数:1)安装为Windows服务:指定服务名,是否需要在操作系统启动时自动运行服务。2)是否将MySql数据库的bin文件夹包含在Windows的环境变量Pa

98、th中。9、设置安全参数:系统管理员帐号root的相关设置1)ModifySecuritySettings(是否需要修改系统管理员安全帐号root的密码):是否允许root帐号从远程计算机登录。2)CreateAnAnoneymousAccount(创建一个匿名帐号):可能会导致一个不安全的系统。10、执行配置计划:1)prepareconfiguration(准备配置)2)Writeconfiguration(写配置文件my.ini)3)Startservice(开始服务)4)Applysecuritysettings(应用安全设置)11、完成配置。三、PHP5.0中对MySql的支持,扩展

99、模块的加载:在php5.0的安装文件夹X:php5ext下找到php_mysql.dll文件在php5.0的配置文件中找到;extension=php_mysql.dll,将前面的分号去掉,并重启Apache服务器。Php5.0扩展模块的相关配置参数:extension_dir=c:php5ext;该行用于指明php5扩展模块所在的硬盘物理位置。五、phpMyadmin2.8.2.4的安装从网上下载phpMyadmin2.8.2.4-win压缩包解开后将其复制到网站根目录更名为phpMyAdmin1、通过http:/localhost/phpmyadmin访问phpmyadmin2、如果php

100、myadmin没有进行配置,请单击页面中的setupscript超级链接进入配置页面。3、在配置页面中servers后找到Add按钮,增加一台mysql服务器。服务器参数设置:只针对Authenticationtype设置为cookie,表示每次登录phpmyadmin时均需要提供mysql的登录用户名及密码。其它参数保持默认值。最后单击add按钮增加。4、在配置页面中找到Charsets按钮,设置字符集。字符集参数设置:只针对Defaultcharset设置为gb2312其它参数保持默认值。最后单击Update按钮,更新设置。5、在配置页面中,找到DownLoad按钮,单击,通过文件下载的方

101、式将这里生成的配置文件config1.inc.php文件保存到phpmyadmin所对应的文件夹下,并改名为config.inc.php6、完成配置,通过http:/localhost/phpmyadmin进入phpmyadmin登录页面,选择中文语言,输入用户名root及密码进行登录。7、在phpmyadmin中就可以创建数据库,在数据库中创建数据表,添加删除记录了。7.2MySql数据库的基本操作一、字段数据类型:1、布尔型BOOL1字节0-false非0-true2、微整型tinyint1字节unsigned(无符号数)范围0到255有符号数范围为-128到1273、小整型smallin

102、t2字节unsigned(无符号数)范围0到65535有符号数范围为-32768到327674、中整型mediumint3字节unsigned(无符号数)范围0到16777215有符号数范围为-8388608到83886075、整型int4字节unsigned(无符号数)范围0到4294967295有符号数范围为-2147483648到21474836476、大整型bigint8字节unsigned(无符号数)范围0到18446744073709551615有符号数范围为-9223372036854775808到92233720368547758077、单精度类型float4字节最多10位有效

103、数字允许的值是-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+388、双精度类型double8字节最多17位有效数字允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+30810、精确小数型decimal(M,D)M=30 M是精度的总数,D是小数点后面的位数。11、日期型date3日期。支持的范围为1000-01-01到9999-12-31。12、日期时间型dat

104、etime8字节日期和时间的组合。支持的范围是1000-01-0100:00:00到9999-12-3123:59:59。13、时间戳型timestamp4字节时间戳。范围是1970-01-0100:00:00到2037年。TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。14、时间型time3字节时间。范围是-838:59:59到838:59:59。15、年期型year1两位或四位格式的年。默认是四位格式。在四位

105、格式中,允许的值是1901到2155和0000。在两位格式中,允许的值是70到69,表示从1970年到2069年。MySQL以YYYY格式显示YEAR值,但允许使用字符串或数字为YEAR列分配值。16、字符类型char(M)M=255汉字与英文字符计算方法相同固定长度字符串,当保存时在右侧填充空格以达到指定的长度。M表示列长度。M的范围是0到255个字符。 注:注:当检索CHAR值时尾部空格被删除。17、变长字符类型varchar(M)M=255汉字与英文字符计算方法相同变长字符串。M表示最大列长度。 注:注:当检索时不删除VARCHAR值的尾部空格。18、二进制类型BINARY(M)M=25

106、5固定长度二进制数,不足添0。 注:注:当检索BINARY值时尾部0被删除。19、二进制类型VARBINARY(M)M文件名.sql例1:手工备份例2:创建备份计划任务D:WINNTsystem32CMD.EXE/cmysqldump-user=root-password=123456testdatac:test.sql或下面这种备份可能存在执行权限不够的问题:echoD:WINNTsystem32CMD.EXE/cmysqldump-user=root-password=123456testdatac:test.sql;2)、数据库的恢复:格式:mysql-user=用户名-password

107、=密码数据库文件名.sqlmysql-user=root-password=123456testdatac:test.sql下面这种恢复可能存在执行权限不够的问题:echoD:WINNTsystem32CMD.EXE/cmysql-user=root-password=123456testdatac:test.sql;7.1PHP操作MySql数据库的函数7.1.1数据库连接函数1、mysql_connect-建立与MySql服务器的连接格式:intmysql_connect(stringhostname:port,stringusername,stringpassword)建立一个与MySq

108、l服务器的连接,该函数的所有参数均可以省去,它们的缺省值分别为主名=localhost端口号:3306用户名为拥有服务器进程的当前用户名,密码为空。如果与MySql服务器连接建立成功,将返回一个integer(整型)的连接描述符,后续操作均要用到该连接描述符,如果失败则返回false。在连接中我们可以用来屏蔽系统的错误处理。如果以相同的参数用本函数再次与MySql服务器建立连接,则php将直接返回上次的连接描述符,除非上次连接已经被mysql_close关闭。例1:$db=mysql_connect(localhost,root,123456)ordie(对不起,连接MySql服务器出错!);

109、echo$db;例2:$db=mysql_connect(localhost,root,1234516);if($db=false)echo连接mysql服务器失败!;2、mysql_close-关闭mysql连接格式:intmysql_close(intlink_identifier);该函数关闭由link_identifier连接描述符所指定的mysql连接。如果缺省link_identifier参数,则将关闭最新建立的mysql连接,执行成功返回true,否则返回false。例1:$db=mysql_connect(localhost,root,123456)ordie(对不起,连接My

110、Sql服务器出错!);echo$db;if(mysql_close($db)echo已经成功关闭mysql连接;elseecho关闭mysql连接失败;实际上,对于一个php脚本文件,当所有脚本执行结束后,都会自动关闭与mysql数据库建立的连接(除开永久性连接),所以在php脚本中没有必要使用mysql_close函数。3、mysql_pconnect-与Mysql服务器建立一个永久连接格式:intmysql_pconnect(stringhostname:port,stringusername,stringpassword)该函数与mysql_connect相似,也是创建一个与mysql服

111、务器的连接,参数说明与mysql_connect一样。如果连接成功,该函数返回一个正的MySql永久连接标志符,如果出错返回false。mysql_pconnect的特征:1)、当使用mysql_pconnect函数时,系统将先尝试寻找一个已经打开的永久连接,它们具有相同的主机、用户名和密码。如果找到一个这样的连接,就返回连接标记符,而不是打开一个新连接。2)、当脚本执行结束时,与MySQL服务器的连接不会关闭,而是继续保持打开状态供以后继续使用。mysql_close不能关闭由mysql_pconnect函数创建的永久性连接。例:$link=mysql_connect(localhost,r

112、oot,123456)ordie(对不起,连接MySql服务器出错!);echo$link.;$close=mysql_pconnect(localhost,root,123456)ordie(对不起,连接MySql服务器出错!);echo$close.;7.1.2数据库操作函数:在php中连接数据库服务器是没有带数据库参数的,所以对于数据库操作应该首先选择数据,然后再对数据库进行查询、插入、修改、删除等操作。1、mysql_select_db-选择一个mysql数据库格式:intmysql_select_db(stringdatabase_name,intlink_identifier)该函

113、数在数据库连接link_identifier参数指定的连接上建立与数据库database_name的连接,或者在连接link_identifier上选择database_name为当前数据库。其中link_identifier如果省去,表示将使用最新建立的连接。函数执行成功返回true,否则返回false。例:$db=mysql_connect(localhost,root,123456)ordie(对不起,连接MySql服务器出错!);mysql_select_db(testdata,$db)ordie(对不起,选择testdata数据库出错!);2、mysql_query-向选定的数据库送

114、出一个查询字符串格式:intmysql_query(stringquery,intlink_identifier)该函数将参数query字符串提供给MySql数据库,用来进行相关的数据处理或执行。如果没有指定link_identifier参数,则程序会自动寻找最近的数据库连接。query查询字符串如果是select语句,则该函数将返回结果集的资源描述符,查询失败返回false;如果query查询字符串是update、insert、delete语句,执行成功则返回true,否则返回false。强调:mysql_query(setnamesgbk);/语句非常重要,使得mysql在处理或返回字符串

115、时,都将采用gbk中文字符集进行处理或返回。例:$db=mysql_connect(localhost,root,123456)ordie(对不起,连接MySql服务器出错!);mysql_select_db(testdata,$db)ordie(对不起,选择testdata数据库出错!);mysql_query(setnamesgbk);$sql=insertintouserinfovalues(0,.$HTTP_POST_VARSname.)$result=mysql_query($sql,$db);$rs=mysql_query(select*fromtable1,$db);7.1.3结

116、果处理函数:1、mysql_fetch_array-把查询结果集中的一行信息返回到一个数组中格式:arraymysql_fetch_array(intresult,intresult_type)该函数把查询得到的结果集中的一行内容返回到数组中,对于该数组可以使用数组下标(0,1,n),也可以使用关键字(字段名1,字段名2,字段名n)来访问数组中每个字段的信息,该函数每执行一次,将使结果集中的行记录指针下移。result_type为可选项,它是一个常量,可以取下面的值:MYSQL_ASSOC(关联数组)、MYSQL_NUM(数字下标数组)和MYSQL_BOTH(既有关联数组又有数字下标,默认值)

117、。对返回数组操作时尽可能使用数字下标以提高处理效率。例:$db=mysql_connect(localhost,root,123456)ordie(对不起,连接MySql服务器出错!);mysql_select_db(testdata,$db)ordie(对不起,选择testdata数据库出错!);mysql_query(setcharactersetgb2312);$rs=mysql_query(select*fromtable1,$db);while($row=mysql_fetch_array($rs)echo$rowid.$rowname.$rowsex.$row年龄.;2、mysql

118、_fetch_object-把结果集的一行信息以对象的形式返回格式:objectmysql_fetch_object(intresult)该函数用来将查询结果集result中的行信息拆到类变量中,返回的将是资料对象,每执行一次该函数,将把结果集中记录指针下移一行。行记录中各字段以对象的属性在对象中存在,因此对于行各字段的访问方法是:对象名-字段名例:$db=mysql_connect(localhost,root,123456)ordie(对不起,连接MySql服务器出错!);mysql_select_db(testdata,$db)ordie(对不起,选择testdata数据库出错!);my

119、sql_query(setcharactersetgb2312);$rs=mysql_query(select*fromtable1,$db);while($row=mysql_fetch_object($rs)echo$row-id.$row-name.$row-sex.$row-年龄.;3、mysql_num_rows-返回结果集中的记录行数格式:intmysql_num_rows(intresult)例:$db=mysql_connect(localhost,root,123456)ordie(对不起,连接MySql服务器出错!);mysql_select_db(testdata,$db

120、)ordie(对不起,选择testdata数据库出错!);mysql_query(setcharactersetgb2312);$rs=mysql_query(select*fromtable1,$db);$recordcount=mysql_num_rows($rs);echo$recordcount;4、mysql_result-返回结果数据格式:mixedmysql_result(intresult,introw,mixedfield)该函数返回结果集中由参数指定的一个单元的内容(mixed表示类型不定的数据),其中field参数可以是字段的数字索引、字段名或者“表名.字段名”的形式。如

121、果一个字段存在别名就必须使用别名,如果field参数省去,表示将返回指定行row中第1个字段的值。第一行对应0行,第一列对应0列。当返回结果集行数较少的情况下可以使用本函数,否则请使用mysql_fetch_row、mysql_fetch_array、mysql_fetch_object函数,以提高效率。例:$db=mysql_connect(localhost,root,123456)ordie(对不起,连接MySql服务器出错!);mysql_select_db(testdata,$db)ordie(对不起,选择testdata数据库出错!);mysql_query(setcharacte

122、rsetgb2312);$rs=mysql_query(select*fromtable1,$db);echo第一条记录ID值:.mysql_result($rs,0,0);echo第二条记录ID值:.mysql_result($rs,1,0);echo第一条记录name值:.mysql_result($rs,0,1);echo第二条记录name值:.mysql_result($rs,1,1);5、mysql_free_result-释放查询结果占用的内存格式:intmysql_free_result(intresult)本函数可以释放当前mysql数据库查询返回所占用的内存。一般只有在非常担

123、心内存的使用可能会不足的情况下才使用本函数。PHP程序会在结束时自动释放内存,低版本中使用mysql_freeresult函数来完成同样的功能。成功返回true,失败返回false。例:$db=mysql_connect(localhost,root,123456)ordie(对不起,连接MySql服务器出错!);mysql_select_db(testdata,$db)ordie(对不起,选择testdata数据库出错!);mysql_query(setcharactersetgb2312);$rs=mysql_query(select*fromtable1,$db);if(mysql_fr

124、ee_result($rs)echo释放rs所占用的内存资源成功;elseecho释放rs所占用的内存资源失败;echo第一条记录ID值:.mysql_result($rs,0,0);echo第二条记录ID值:.mysql_result($rs,1,0);echo第一条记录name值:.mysql_result($rs,0,1);echo第二条记录name值:.mysql_result($rs,1,1);6、mysql_affected_rows-返回影响的记录数格式:intmysql_affected_rows(intlink_identifier)该函数主要用于获得MySql的最后一次IN

125、SERT、UPDATE或DELETE所影响的行数,它也能返回SELECT语句中记录的行数。例1:$db=mysql_connect(localhost,root,123456)ordie(对不起,连接MySql服务器出错!);mysql_select_db(testdata,$db)ordie(对不起,选择testdata数据库出错!);mysql_query(setcharactersetgb2312);$rs=mysql_query(deletefromtable1limit1,$db);echo影响的记录数:.mysql_affected_rows($db);例2:$db=mysql_c

126、onnect(localhost,root,123456)ordie(对不起,连接MySql服务器出错!);mysql_select_db(testdata,$db)ordie(对不起,选择testdata数据库出错!);mysql_query(setcharactersetgb2312);$rs=mysql_query(select*fromtable1,$db);echo影响的记录数:.mysql_affected_rows($db);7、mysql_data_seek-移动结果集中的记录指针格式:intmysql_data_seek(intresult,introw)该函数用于移动res

127、ult结果集中的记录指针到row位置,成功返回true,否则返回false,row取值=0,0对应结果集中的第1条记录,依此类推。8、mysql_errno-返回前一次MySql操作错误信息代码格式:intmysql_errno(intlink_identifier)该函数用于返回前一次MySql操作的错误信息代码。如果没有错误出现,就返回false。9、mysql_error-返回前一次MySql操作错误信息格式:stringmysql_error(intlink_identifier)该函数用于返回前一次MySql操作的错误信息。如果没有错误出现,就返回空字符串。例:mysql_conne

128、ct(marliesle);echomysql_errno().:.mysql_error().;mysql_select_db(nonexistentdb);echomysql_errno().:.mysql_error().;$conn=mysql_query(SELECT*FROMnonexistenttable);echomysql_errno().:.mysql_error().;7.2.2使用PHP连接到数据库一个PHP数据库类实例:mySQL_Class.php文件,保存mySQL_Class类的定义与实现Server=$server;$this-Uid=$uid;$this-P

129、wd=$pwd;$this-DataBase=$dataBase;$this-conn=mysql_connect($this-Server,$this-Uid,$this-Pwd)ordie(链接服务器失败,程序中止!);mysql_select_db($this-DataBase,$this-conn)ordie(选择数据库失败,程序中止!);mysql_query(setnamesgbk,$this-conn);/*/*mySQL_Class类的SelectDB函数*/*功能:利用$this-conn中的链接对象,*/*选择数据库,并设置字符集。*/*-*/*参数$dataBase:要链

130、接数据库*/*/functionSelectDB($dataBase)mysql_select_db($dataBase,$this-conn)ordie(选择数据库失败,程序中止!);mysql_query(setnamesgbk,$this-conn);/*/*mySQL_Class类的QueryRS函数*/*功能:利用$this-conn中的链接对象,*/*执行select语句,并返回记录集。*/*-*/*参数$sql:要执行的select语句*/*/functionQueryRS($sql)$rs=mysql_query($sql,$this-conn);return$rs;/*/*m

131、ySQL_Class类的QueryRow函数*/*功能:利用$this-conn中的链接对象,*/*执行select语句,并把第一条记录*/*以数组的方式进行返回。*/*-*/*参数$sql:要执行的select语句*/*/functionQueryRow($sql)$rs=mysql_query($sql,$this-conn);if($rs)$arr=mysql_fetch_array($rs);return$arr;elsereturnNULL;/*/*mySQL_Class类的QueryOne函数*/*功能:利用$this-conn中的链接对象,*/*执行select语句,并返回第一条

132、*/*记录第一个字段的值。*/*-*/*参数$sql:要执行的select语句*/*/functionQueryOne($sql)$rs=mysql_query($sql,$this-conn);if($rs)$arr=mysql_fetch_array($rs);return$arr0;elsereturnNULL;/*/*mySQL_Class类的QuerySQL函数*/*功能:利用$this-conn中的链接对象,*/*执行insert、update、delete语句*/*并返回语句执行后受影响的记录*/*行数。*/*-*/*参数$sql:要执行的sql语句*/*/functionQue

133、rySQL($sql)$rs=mysql_query($sql,$this-conn);if($rs)$num=mysql_affected_rows($this-conn);return$num;elsereturn0;7.2.2使用PHP连接到数据库例:testdb.php:无标题文档7.2.3数据库的基本操作1、基本选择(select):例1:提取单值(指的是返回第一条记录的第一个字段的值)QueryOne(selectnamefromtable1whereid=13);echo$name;?例2:提取第一行记录QueryRow(select*fromtable1whereid=13);

134、if($row)foreach($rowas$key=$val)echo$key=.$val.;elseecho没有记录返回;?例3:提取多行记录QueryRS(select*fromtable1orderbyiddesc);while($row=mysql_fetch_array($rs)echoid=.$row0.;echoname=.$row1.;echosex=.$row2.;echo年龄=.$row3.;?2、插入、删除和更新:例1:插入记录example.phpQuerySQL($sqlstring);echo影响的行数为.$num;?无标题文档提交给自己的PHP表单及处理程序用户

135、名:性别:男女年龄:例2:修改记录example.php?id=值QuerySQL($sqlstring);echo影响的行数为.$num;else$sqlstring=select*fromtable1whereid=$HTTP_GET_VARSid;$row=$sql-QueryRow($sqlstring);$name=$rowname;$sex=$rowsex;$年龄=$row年龄;?无标题文档formaction=?id=method=post提交给自己的PHP表单及处理程序用户名:inputname=nametype=textid=namevalue=性别:inputtype=ra

136、dioname=sexvalue=男男inputtype=radioname=sexvalue=女女年龄:inputname=agetype=textid=agesize=10value=例3:删除记录example.php?id=值QuerySQL($sqlstring);echo删除了.$num.行记录!;elseif(!$HTTP_GET_VARSid)echo需要id参数!;exit();?无标题文档你确认要删除ID=的记录吗?inputtype=hiddenid=idname=idvalue=通过本章的学习要求大家掌握Cookie与Session在PHP中的运用及区别。8.1Cook

137、ie的使用8.1.1CookieCookie存放在客户端计算机上,Cookie可以被客户端IE浏览器所拒绝,对于IE6.0浏览器,通过在“工具-Internet选项-隐私”中进行设置安全级别,使用Cookie之后,将会降低网站的安全性。Cookie的删除:对于IE6.0浏览器,通过在“工具-Internet选项-常规”中通过“删除Cookies”进行删除。8.1.2Cookie函数的使用当Cookie变量被设置后,我们可以在网站的其它页面中使用该Cookie变量的值。1、设置Cookie变量函数setcookie(必须在发送任何HTTP头信息以前进行传送,也可以使用ob_start()函数及o

138、b_end_flush()来解决这个问题):格式:setcookie(stringname,stringvalue,intexpire)其中:name为字符串,指定Cookie变量名(以备将来进行访问)value为字符串,指定Cookie变量的值expire为整数,可以省去,表示Cookie的过期时间,设置为0或者不设置值均表示Cookie在当前浏览器窗口被关闭时将被浏览器删除。可以使用time函数生成一个过期时间。例:test.php无标题文档2、获取Cookie的值:格式:$HTTP_COOKIE_VARS变量名例:网站页面权限验证实例login.htm(登录表单页),login.php(

139、登录处理页),admin.php(后台管理页),logout.php(注销本次登录),当用户登录时,记录该用户的用户名及用户身份在Cookie变量中,在admin.php页面中通过对Cookie中用户身份变量进行判断以决定该用户是否有权限进入后台管理,如果有权限需要进行注销本次登录logout.php。为了实现该实例,需要向users表中增加一个用户类型字段usertype(整型),手动修改admin用户的用户类型为2(0-普通会员,1-高级会员,2-系统管理员)。login.htm:无标题文档functioninput()if(document.all.username.value=)ale

140、rt(对不起,用户名不能为空);document.all.username.focus();returnfalse;if(document.all.password.value=)alert(对不起,密码不能为空);document.all.password.focus();returnfalse;returntrue;用户登录页面用户名:密码:login.php:QueryOne(select*fromuserswhereusername=$HTTP_POST_VARSusernameandpassword=$HTTP_POST_VARSpassword);if($id)/验证通过setco

141、okie(username,$sql-datausername);setcookie(usertype,$sql-datausertype);echodocument.location=admin.php;elseechoalert(用户名错误或密码错误,登录失败!);history.back();?无标题文档admin.php:?php$username=$HTTP_COOKIE_VARSusername;$usertype=$HTTP_COOKIE_VARSusertype;if($usertype2)setcookie(username);setcookie(usertype);echo

142、alert(对不起,你不是系统管理员,进入后台管理页面失败!);document.location=login.htm;exit();?无标题文档欢迎用户进入后台管理页面,当前时间注销本次登录logout.php:无标题文档3、Cookie数组:例:?phpsetcookie(cookieone,cookieone);setcookie(cookietwo,cookietwo);setcookie(cookiethree,cookiethree);echo$HTTP_COOKIE_VARScookieone.;echo$HTTP_COOKIE_VARScookietwo.;echo$HTTP_

143、COOKIE_VARScookiethree.;if(isset($HTTP_COOKIE_VARScookie)foreach($HTTP_COOKIE_VARScookieas$name=$value)echo$name=$valuen;?8.2Session的使用8.2.1Session的简介1、什么是Session当一个访问者从浏览器打开一个窗口开始访问一个网站时,他就与该网站开始了一个Session(会话),当访问者离开该网站时Session(会话)就结束了。Session从用户登录网站开始,到用户注销结束,一直跟踪用户,保存与用户相关的信息。、什么是Session变量Session

144、变量是个有规律的全局变量,与Cookie一样可以跨页面使用,当一个Session变量被注册,在其它页面上可以得到该Session变量的值,在Session开始之后我们可以使用Session_register(“变量名”)函数来注册一个Session变量。3、Session与Cookie变量的区别:Session与Cookie有点类似,但Session变量保存在服务器端,而Cookie变量保存在客户端计算机上。Cookie可以被客户端禁用可以长期存在,Session在会话生存周期内一直存在,直到会话结束,PHP一般用文件存储Session变量。Session变量比Cookie变量有更高的安全性。

145、、Session的缺点:Session变量不能用来保存对象,保存在Session里的数据的使用效率不是很高,因为PHP一般使用文件来保存Session的变量信息,这需要从文件进行读与写操作。5、Session变量的使用:第一步:session_start();/会话开始第二步:session_register(“变量名”,“变量名1”);/注册Session变量名第三步:使用$HTTP_SESSION_VARS变量名Session变量8.2.2配置Session在PHP配置文件php.ini我们可以方便的配置Session选项1、session.save_handler:定义用来保存Sessi

146、on数据的方式,默认为files2、session.save_path:保存session的路径3、session.auto_start:0或者1每个php页面是否自动开始会话4、session.cookie_lifetime:设定发送给客户端的Cookie的有效时间。如果设为0,表示直到浏览器关闭才失效。默认值为0。5、session.use_cookie:设定是否使用Cookie来存放SessionID,默认值为1。6、session.cache_expire:设定缓存的session内容的有效期(分),默认为180分钟.8.2.3PHP中Session函数1、session_start-

147、初始化Session数据:格式:booleansession_start()该函数初始化一个新会话,若本次会话已经开始,则连接上原有Session会话。如果PHP中Session没有自动开始,需要使用该函数来开始或连接一个Session会话。2、session_destroy-删除Session中的所有数据并中止当前会话:格式:booleansession_destroy()执行成功返回true,否则返回false3、session_name-返回或设定目前Session的名称格式:stringsession_name(stringname)该函数不常用,用来取得或设定目前Session的名称

148、。若没有参数,则表示仅获取目前Session的名称,带上参数则表示将Session名称设为参数指定的名称。Session名称只能包含字母且不能太长,在传递sessionid时将用到该名称。如果要设定session名称,必须先于session_start()或session_register()之前进行设定。例:4、session_save_path-返回或设定当前Session的保存路径格式:stringsession_save_path(stringpath)如果不提供任何参数,则返回当前Session数据的保存路径;如果给出了path参数,则把路径path设为session的保存路径。例:

149、5、session_id-返回或设定当前Session的ID格式:stringsession_id(stringid)如果没有参数,则返回当前session的ID;如果给出了ID参数,则把当前Session的ID设为给定参数。它常用来把session的ID加入到URL中,以决定那些窗口属于同一会话。例:6、session_register-注册一个或多个当前Session变量格式:booleansession_register(mixedname,mixedname)该函数用来声明当前Session的多个变量。参数可以变量也可以是数组。若所有变量创建成功则返回true,否则返回false例1:

150、例2:$val)echo$key.=.$val;?7、session_unregister-从当前session中删除一个变量格式:booleansession_unregister(stringname)删除成功返回true,否则返回false例:8、session_unset-释放所有的session变量格式:session_unset()例:9、session_is_registered-查看变量是否属于当前Session格式:booleansession_is_registered(stringname)如果当前session中有名为name的Session变量,则函数返回true,否

151、则返回false。例:?phpsession_start();session_register(UserId,UserType);$HTTP_SESSION_VARSUserId=admin;echoisset($HTTP_SESSION_VARSUserId).;echoisset($HTTP_SESSION_VARSUserType).;echosession_is_registered(UserId).;echosession_is_registered(UserType).;$HTTP_SESSION_VARSUserType=2;echo$HTTP_SESSION_VARSUserI

152、d.;echo$HTTP_SESSION_VARSUserType.;echosession_is_registered(UserType1).;echoisset($HTTP_SESSION_VARSUserType1).;?8.2.4应用举例例1:网站页面权限验证实例(改用Session实现)login.htm(登录表单页),login.php(登录处理页面),admin.php(后台管理页),logout.php(注销本次登录),当用户登录时,记录该用户的用户名及用户身份在Session变量中,在admin.php页面中通过对Session中用户身份变量进行判断以决定该用户是否有权限进入

153、后台管理,如果有权限需要进行注销本次登录logout.php。为了实现该实例,需要向users表中增加一个用户类型字段usertype(整型),手动修改admin用户的用户类型为2(0-普通会员,1-高级会员,2-系统管理员)。login.htm:无标题文档functioninput()if(document.all.username.value=)alert(对不起,用户名不能为空);document.all.username.focus();returnfalse;if(document.all.password.value=)alert(对不起,密码不能为空);document.all.

154、password.focus();returnfalse;returntrue;用户登录页面用户名:密码:login.php:Setup(127.0.0.1,root,123456);$sql-Create(userdb);$id=$sql-QueryItem(select*fromuserswhereusername=$HTTP_POST_VARSusernameandpassword=$HTTP_POST_VARSpassword);if($id)/验证通过session_start();session_register(username);$HTTP_SESSION_VARSuserna

155、me=$sql-datausername;session_register(usertype);$HTTP_SESSION_VARSusertype=$sql-datausertype;echodocument.location=admin.php;elseechoalert(用户名错误或密码错误,登录失败!);history.back();?无标题文档admin.php:?phpsession_start();$username=$HTTP_SESSION_VARSusername;$usertype=$HTTP_SESSION_VARSusertype;if($usertype2)sess

156、ion_destroy();echoalert(对不起,你不是系统管理员,进入后台管理页面失败!);document.location=login.htm;exit();?无标题文档欢迎用户进入后台管理页面,当前时间注销本次登录logout.php:无标题文档通过本章的学习要求大家能够掌握文件的相关操作包括(文件的读、写、删除、更名),补充文件夹的相关操作(文件夹的创建、删除、更名),能够处理上传文件,使用远程文件。9.1函数简介9.1.1路径函数1、basename-返回不含路径的文件名字符串格式:stringbasename(stringpath)例:?php$path1=c:dddaaa

157、index_1.php;$file1=basename($path1);echo$file1.;$path1=/ddd/aaa/index.php;$file1=basename($path1);echo$file1;?2、dirname-获取路径中的目录名称格式:stringdirname(stringpath)例:?php$path1=c:dddaaaindex_1.php;$dir1=dirname($path1);echo$dir1.;$path1=/ddd/aaa/index.php;$dir1=dirname($path1);echo$dir1.;?3.realpath-返回物理路

158、径(路径希望用虚拟路径)格式:stringrealpath(stringpath)例:?php$path1=/;$path=realpath($path1);echo$path.;$path1=./index.php;$path=realpath($path1);echo$path.;?9.1.2文件操作函数1、fopen-打开一个文件或URL格式:intfopen(stringfilename,stringmode,intuse_include_path)如果filename以http:/开始,就会对指定的服务器建立一个HTTP1.0连接,然后返回一个文件指针,指和返回文本的开始。在发出HT

159、TP请求时附加了一个“Host”头来处理基于名字的虚拟主机。该函数不支持HTTP重定向。如果filename以ftp:/开始,会与指定的服务器建立一个ftp连接,返回指向指定文件的文件指针。如果服务器不支持被动模式(passivemodeftp),就会连接失败。通过ftp连接可以对文件进行读写操作。如果filename是”php/stdin”,”php/stdout”,”php/stderr”中的一个,就会打开对应的输入输出流。如果以其他形式开头,就会从本机文件系统中打开该文件,并返回文件指针。如果打开文件失败,则返回false。参数:mode的取值:“r”:以只读方式打开文件,文件指针指到文

160、件开始处。“r+”:以可读写方式打开文件,文件指针指到文件开始处。“w”:以写入方式打开文件,文件指针指到开始处,并将原文件的长度设为0,如果文件不存在,则建立新文件。“w+”:以可读写方式打开文件,文件指针指到开始处,并将原文件的长度设为0,如果文件不存在,则建立新文件。“a”:以写入方式打开文件,文件指针指到最后。如果文件不存在,则建立新文件。“a+”:以可读写方式打开文件,文件指针指到最后。如果文件不存在,则建立新文件。“b”:以二进制方式打开文件。如果需要在系统路径中寻找该文件,可以使用第3个参数,并设置为1。2、fclose-关闭已经打开的文件格式:intfclose(intfp)该

161、函数用来关闭已经打开的文件的指针fp。成功返回true,失败则返回false。其中文件指针必须是有效的,且必须是已经用fopen或fsockopen函数成功打开的文件指针。3、feof-测试文件指针是否在文件尾格式:intfeof(intfp)如果文件指针已经指向文件尾,返回true,否则返回false4、fgetc-获取文件指针所指的字符,并移动指针到下一个字符格式:stringfgetc(intfp)该函数获取文件指针所指的字符,返回字符串类型的字符。指针如果在EOF则返回false。例1:例2:5、fgets-取得文件指针所指的行-并改变文件指针格式:stringfgets(intfp,

162、intlength)该函数获取文件指针所指的行。如果发生错误,返回false。例1:6、fread-以二进制方式读取文件格式:stringfread(intfp,intlength)$content=fread($fp,filesize(“c:test.txt”);7、fwrite-二进制方式写入文件格式:intfwrite(intfp,stringstring,intlength)该函数将字符串string写入文件资料的指针fp上。如果有指定长度length,则会写入指定长度字符串,或是写到字符串结束。写入成功返回写入的字节数,否则返回false。例1:例2:8、fputs-以字符方式向文件

163、写入内容格式:intfputs(intfp,stringstr,intlength)该函数用来将字符串str以字符方式写到文件中。如果有指定长度length,则会写入指定长度字符串,或是写到字符串结束。写入成功返回写入的字节数,否则返回false。例1:例2:9、rewind-移动文件指针到文件开始处格式:intrewind(intfp)例?php$fp=fopen(c:/test.txt,r);if($fp)echofgets($fp).;echofgets($fp).;echofgets($fp).;rewind($fp);echofgets($fp).;fclose($fp);?9.1.

164、3文件属性函数1、file_exists-检查文件是否存在格式:booleanfile_exists(stringfilename)存在返回true,否则返回false,该函数不能用于远程文件,必须对服务器中的文件进行检查。返回值放在快速缓冲区中。例:2、filesize-取得文件的大小格式:intfilesize(stringfilename)本函数返回指定文件的大小。返回false表示发生错误。返回值放在快速缓冲区中。例:3、unlink-删除一个文件格式:intunlink(stringfilename)删除成功返回true,否则返回false例:4、rename-重命名或移动文件格式:

165、intrename(stringoldname,stringnewname);更名成功返回true,否则返回false例: 格式格式: copy(stringoldname,stringnewname)5、mkdir-创建文件夹格式:intmkdir(stringpathname,intmode)本函数建立参数pathname目录,参数mode以八进位的方式指定(在参数前加0)比较不会出错,对于Windows系统无效。返回true表示建立成功,失败则返回false。例:6、rmdir-删除文件夹:格式:intrmdir(stringpathname,)本函数删除参数pathname目录,该函数

166、只能删除空目录。返回true表示删除成功,失败则返回false。例:7、rename-重命名文件夹(移动文件夹的功能)格式:intrename(stringolddir,stringnewdir);更名成功返回true,否则返回false例:9.2处理文件上传:相关全局数组:$HTTP_POST_FILES表单中文件变量名tmp_name相关PHP配置php.ini中选项:file_uploads=on允许通过http上传文件upload_tmp_dir=文件上传到服务器端的临时文件夹upload_max_filesize=2M上传文件的大小限制2M$HTTP_POST_FILESfile1上

167、传文件后,文件信息以一个数组方式存在,其中数组元素有:name文件在客户端计算机上的文件名type上传文件的类型size上传文件的大小,单位:字节tmp_name所上传文件在服务器端的临时文件名例:upload.htm无标题文档文件上传例子请选择要不是传的文件:upload.php:?phpif($HTTP_POST_FILESfile1name=)echo对不起,你没有选择要上传的文件!;echoalert(对不起,你没有选择要上传的文件!);history.back();exit;elseecho你上传的文件为:.$HTTP_POST_FILESfile1name.;echo上传文件类型为

168、:.$HTTP_POST_FILESfile1type.;echo上传文件大小为:.$HTTP_POST_FILESfile1size.bytes;echo服务器端的临时文件为:.$HTTP_POST_FILESfile1tmp_name.;if(is_uploaded_file($HTTP_POST_FILESfile1tmp_name)echo上传成功!;$newfile=realpath(.).upload.$HTTP_POST_FILESfile1name;echo$newfile;move_uploaded_file($HTTP_POST_FILESfile1tmp_name,$ne

169、wfile);?无标题文档9.3使用远程文件远程文件就是网络上其他机器上的文件,而非本机上的文件。使用远程文件可以节省本机资源,充分体现网络的优势。如果要使用远程文件,必须将PHP配置文件中php.ini的选项allow_url_fopen设置为”on”。例1:readtitle.php?php$fp=fopen(http:/localhost/tom/tom_com.htm,r);if(!$fp)echo不能打开远程文件.n;exit;while(!feof($fp)$line=fgets($fp,1024);if(eregi(.*),$line,$out)$title=$out1;brea

170、k;fclose($fp);echo$title;?1、is_dir-测试一个字符串是否为一个文件夹格式:booleanis_dir(stringfilename)如果是目录则返回true,否则返回false。例:2、is_file-测试一个字符串是否为一个文件格式:booleanis_file(stringfilename)如果是文件返回true,否则返回false例:3、opendir-根据路径打开一个文件夹(目录)并返回操作句柄格式:intopendir(stringpath)4、readdir-读取目录操作句柄中的当前文档,并把指针指向下一个文档格式:stringreaddir(int

171、dir_handle)返回目录操作句柄中的当前指针指向的文件档名称,并把指针指向下一个文件档。5、closedir-关闭目录操作句柄格式:voidclosedir(intdir_handle)例:$handle=opendir(.);if($handle)echo目录handle:$handlen;echo档案:n;while($file=readdir($handle)echo$filen;$path=realpath(.);$filename=$path./.$file;if(is_dir($filename)echo是一个文件夹;if(is_file($filename)echo是一个文

172、件;echo;closedir($handle);?通过本章的学习,要求大家掌握发送电子邮件、在FTP服务器下载文件、查询域名等知识。10.1PHP的网络函数10.1.1URL处理函数1、base64_encode-使用MIMEbase64对数据进行编码格式:stringbase64_encode(stringdata)函数将字符串data以MIMEbase64方式进行编码,编码后的字符串只包含英文字母大小写、阿拉伯数字、等号与斜线,共64个基本字符,不包含其他特殊字符,因此取名base64。编码后的字符串比原来的字符串长度增加1/3左右。例:2、base64_decode-对经过MIMEba

173、se64编码的字符进行解码格式:stringbase64_decode(stringdata)该函数对以MIMEbase64编码的数据进行解码并返回,返回的数据可能是中文字符串或二进制数据。例:3、parse_url-解析字符串,并返回它的元素格式:arrayparse_url(stringurl)函数返回一个关联数组,其中包括了一个URL的各种信息。元素中:scheme协议名称host主机port端口user用户名pass密码path访问路径query查询串例:$val)echo$key.=.$val.;?4、urlencode-对URL进行编码格式:stringurlencode(stri

174、ngstr)该函数把所有除“-”、“_”、“.”以外网页的非字母字符转换为%加十六进制数字的形式,并把空格转换为“+”。它通常用对对url中查询部分进行编码。5、urldecode-对已编码的URL进行解码格式:stringurldecode(stringstr)该函数对用urlencode进行编码的字符串进行解码。10.1.2FTP函数1、ftp_connect-建立一个FTP连接格式:intftp_connect(stringhost,intport)与host主机的FTP站点建立一个连接并返回连接标识,失败返回false,不给出post端口号,则与21端口进行连接。2、ftp_login

175、-登录一个FTP连接格式:intftp_login(intftp_stream,stringusername,stringpassword)以ftp_stream连接标识并通过username及password登录相应的FTP站点,如果站点支持匿名登录,则用户名通常为anonymous,密码为空,成功返回true,失败返回false。3、ftp_chdir-改变要访问的FTP服务器上的目录格式:intftp_chdir(intftp_stream,stringdirectory)该函数的参数ftp_stream为FTP的连接标识,参数directory为要访问的目录。执行成功返回true,否则

176、返回false。4、ftp_nlist-列出指定目录中的所有文件格式:arrayftp_nlist(intftp_stream,stringdirectory)该函数用来列出指定目录中的所有文件名称,参数ftp_stream为FTP的连接标识,执行成功返回所有文件名的数组,否则返回false。5、ftp_rawlist-列出指定目录中文件夹详细信息格式:arrayftp_rawlist(intftp_stream,stringdirectory)本函数可详细列出指定路径中的所有文件名称。6、ftp_get-从服务器上下载一个文件格式:intftp_get(intftp_stream,strin

177、glocal_file,stringremote_file,intmode)本函数以mode模式下载FTP服务器上的文件remote_file到本机的local_filemode取值:FTP_ASCII(文本)和FTP_BINARY(二进制),执行成功返回true,否则返回false。7、ftp_put-向FTP服务器中上传一个文件函数描述:intftp_put(intftp_stream,stringremote_file,stringlocal_file,intmode)本函数以mode模式上传本机文件local_file到FTP服务器名为remote_file,成功返回true,失败返回

178、false。8、ftp_delete-删除FTP服务器的一个文件格式:intftp_delete(intftp_stream,stringremote_file)本函数删除FTP服务器上的remote_file文件,成功返回true,失败返回false。9、ftp_quit-关闭FTP连接格式:intftp_quit(intftp_stream)关闭由ftp_stream连接标识指定的FTP连接,成功返回true,失败返回false。10、ftp_mkdir-创建文件夹(/dd/文件夹名称)格式:stringftp_mkdir(intftp_stream,stringdirectory)该函数

179、在FTP站点上创建一个文件夹,创建成功返回文件夹名称,失败返回false。11、ftp_rename-ftp的文件更名(/ddd/名称/ddd/新名称)格式:booleanftp_rename(intftp_stream,stringfrom,stringto)将from对应的文件更为为to名称,成功返回true,失败返回false。12、ftp_rmdir-删除文件夹(/ddd/名称)格式:booleanftp_rmdir(intftp_stream,stringdirectory)将FTP中directory文件夹删除,成功返回true,失败返回false。13、ftp_size-获取文件

180、(文件夹)大小(/ddd/名称)格式:intftp_size(intftp_stream,stringremote_file)获取FTP服务器指定文件的大小byte,失败返回-1。14、ftp_systype-显示FTP服务器系统信息格式:stringftp_systype(intftp_stream)10.1.3其他网络函数1、fsockopen-建立一个Internet或Unix主机socket连接格式:intfsockopen(stringudp:/hostname,intport,interrno,stringerrstr,inttimeout)hostname指定主机名(如果为udp

181、协议必须显示给出),port指定连接端口,errno为返回参数(必须采用引用方式),返回出错号,errstr为返回参数(必须采用引用方式),返回出错信息,timeout为超时设置超时则断开连接,单位为秒。成功返回一个文件指针,可供前面介绍的fgetc(),fgets(),fputs()、fclose(),feof()使用。失败返回false。例:2、pfscokopen-建立一个永久Internet或unix主机socket连接格式:intpfsockopen(stringudp:/hostname,intport,interrno,stringerrstr,inttimeout)PHP页面在

182、执行结束后,该连接不会不关闭,可以提高效率,但将消耗较多系统资源。3、gethostbyaddr-返回给定IP地址的域名格式:stringgethostaddr(stringip_address)根据IP地址返回相应域名,出错直接返回IP地址。例:4、gethostbyname-根据给定域名返回IP地址格式:stringgethostbyname(stringhostname)例:5、gethostbynamel-根据域名返回所有IP地址格式:arraygethostbynamel(stringhostname)返回一个数组。例:$val)echo$key.=.$val.;?6、ip2long

183、-将IPv4(192.168.0.1)(IP地址)的字符串转换为一个合适的地址格式:intip2long(stringip_address)例:7、long2ip-一个长整形数字转换为IPv4的IP地址字符串格式:stringlong2ip(intaddress)例:10.2使用PHP发送电子邮件mail-PHP中发送邮件的类smtp类()这个类可以支持用户验证后才能发送邮件的邮件服务器。smtp.class.phptest.php:?/*/*.php使用文件,怎么使用在这里/*require(smtp.class.php);$smtpserver=;/SMTP服务器$smtpserverpo

184、rt=25;/SMTP服务器端口$smtpusermail=;/SMTP服务器的用户邮箱$smtpemailto=;/发送给谁$smtpuser=mingnuo;/SMTP服务器的用户帐号$smtppass=4444;/SMTP服务器的用户密码$mailsubject=Te3333stSubject;/邮件主题$mailbody=Thisis3333atestmail;/邮件内容$mailtype=HTML;/邮件格式(HTML/TXT),TXT为文本邮件$smtp=newsmtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);/这

185、里面的一个true是表示使用身份验证,否则不使用身份验证.$smtp-debug=TRUE;/是否显示发送的调试信息$smtp-sendmail($smtpemailto,$smtpusermail,$mailsubject,$mailbody,$mailtype);?10.3使用PHP访问FTP站点一个实例。通过本章的学习要求大家掌握如果利用正则表达式进行字符串查找和替换。11.1正则表达式简介1、POSIX规范的相关函数:1)、ereg-利用正则表达式进行字符串查找(要区分大小写)格式:intereg(stringpattern,stringstring,arrayregs)将在字符串st

186、ring中查找与字符串pattern相匹配的第一个字符串(要区分大小写),如果找到返回true,否则返回false,如果要将找到的与字符串pattern相匹配的字符串保存起来可以加上第三个参数(该参数可以省去),该参数应该是一个数组变量,该数组的下标为0(regs0)的元素将对应与pattern字符串匹配的字符串本身,下标为1(regs1)的元素对应pattern字符串中的正则表达式所匹配的第一个字符串。2)、ereg_replace-利用正则表达式进行字符串替换(要区分大小写)格式:stringereg_replace(stringpattern,stringreplacement,stri

187、ngstring)本函数将在字符串string中查找与字符串pattern相匹配的字符串(要区分大小写),如果找到则用replacement字符串替换所有的匹配字符串,函数将返回替换后的结果字符串。3)、eregi-利用正则表达式进行字符串查找(不区分大小写)格式:interegi(stringpattern,stringstring,arrayregs)将在字符串string中查找与字符串pattern相匹配的第一个字符串(不区分大小写),如果找到返回true,否则返回false,如果要将找到的与字符串pattern相匹配的字符串保存起来可以加上第三个参数(该参数可以省去),该参数应该是一个

188、数组变量,该数组的下标为0(regs0)的元素将对应与pattern字符串匹配的字符串本身,下标为1(regs1)的元素对应pattern字符串中的正则表达式所匹配的第一个字符串。4)、eregi_replace-利用正则表达式进行字符串替换(不区分大小写)格式:stringeregi_replace(stringpattern,stringreplacement,stringstring)本函数将在字符串string中查找与字符串pattern相匹配的字符串(不区分大小写),如果找到则用replacement字符串替换所有的匹配字符串,函数将返回替换后的结果字符串。5)、split-利用正则

189、表达式将字符串分割为数组(要区分大小写)格式:arraysplit(stringpattern,stringstring,intlimit)本函数用与字符串pattern匹配的字符串对string进行分割(要区分大小写),并形成数组,limit指出最多处理的次数,省去表示全部进行处理。函数将返回一个数组,如果string中没有匹配的字符串,则函数返回只有一个元素的数组,该元素的下标为0,值为string。6)、spliti-利用正则表达式将字符串分割为数组(不区分大小写)格式:arrayspliti(stringpattern,stringstring,intlimit)本函数用与字符串pat

190、tern匹配的字符串对string进行分割(不区分大小写),并形成数组,limit指出最多处理的次数,省去表示全部进行处理。函数将返回一个数组,如果string中没有匹配的字符串,则函数返回只有一个元素的数组,该元素的下标为0,值为string。7)、sql_regcase-不字符串转换为大小写无关的正则表达式格式:stringsql_regcase(stringstring)本函数将字符串中每个字符转换为Aa格式并形成最终字符串返回。2、Perl规范的相关函数,在Perl规范中,正则表达式必须以/开始/i结束:1)、preg_match-利用正则表达式进行字符串查找2)、preg_match

191、_all-利用正则表达式进行所有字符串查找3)、preg_replace-利用正则表达式进行查找并替换4)、preg_split-利用正则表达式者字符串分割5)、preg_quote-引注正则表达式,在特殊字符前加(了解)6)、preg_grep-正则表达式匹配(了解)11.2正则表达式模式匹配在正则表达式函数中字符分四种,正常字符,模式匹配符,转义字符,字符簇。对于正常字符将原样进行匹配。例1:?php$string=frontpagetooeasy;if(ereg(“too”,$string,$arr)/too中没有子正则表达式,所以$arr1为空echo找到;echo$arr0.;/to

192、o本身echo$arr1.;/为空elseecho没有找到;?例2:?php$string=frontpagetooeasy;if(ereg(t(.*)o,$string,$arr)/t(.*)o中有正则表达式,所以$arr1为有值echo找到;echo$arr0.;/t(.*)o所匹配的字符串本身echo$arr1.;/(.*)正则表达式所匹配的字符串elseecho没有找到;?1、*-指示字符出现的次数通常放于字符后面或子正则表达式后面,表示0个或0个以上前面的部分例1:例2:2、+-指示字符出现的次数通常放于字符后面或子正则表达式后面,表示1个或1个以上前面的内容(字符)例1:3、?-指

193、示字符出现的次数通常放于字符后面或子正则表达式后面,表示0个或1个前面的内容(字符)例1:4、n,m-指示字符出现的次数通常放于字符后面或子正则表达式后面,表示至少n个不超过m个前面的内容(字符)格式1:0,等同于*表示至少0个或以上前面的字符例:格式2:1,等同于+表示至少1个或以上前面的字符例:格式3:0,1等同于?表示0个或1个前面的字符例:格式4:2,5表示有2到5个前面的字符例:5、$-指示字符出现的位置必须放在字符或正则表达式的尾部,在整个正则表达式中,$字符必须是最后一个字符,表示将找寻以字符或正则表达式匹配的字符结尾的字符串。例:6、-指示应该是(或不是)字符列表中的任意一个字

194、符(1个)中括号里面应该有多个字符的列表,或以-表示的字符的一个范围,该表达式只可能表示唯一一个字符。如果中括号中第一个字符为,表示不能是列表中的任一个字符;否则,表示只可能是列表中的某一个字符。格式1:abcdef该表达式表示只可能是abcdef中的某一个字符例:格式2:a-f等同于abcdef该表达式表示只可能是abcdef中的某一个字符例:格式3:a-d0-3等同于abcd0123该表达式表示只可能是abcd0123中的某一个字符例:格式4:a(bc)def该表达式表示的字符不可能是abcdef中任一个字符例:格式5:a-d0-3该表达式表示的字符不可能是abcd0123中任一个字符例:

195、7、-不在中括号内部时指示字符的位置必须放在字符或正则表达式的前面,在整个正则表达式中,字符必须是第一个字符,表示将找寻以字符或正则表达式匹配的字符开头的字符串。例:8、.-表示任意(n之外的)一个字符(1个字符)例:9、|-表示只可能是左边或右边的选项中的一个(1个)例:10、()-表示正则表达式中的一个子正则表达式例:11、-表示转义字符在正则表达式中如果要表示上面用到的*+?$.()这些字符本身,必须在前面加上,例如表示本身这个字符。如果在内部的字符列表中要表过-本身,也必须在前面加上。例:12、nrt$转义字符在正则表达式中任然表示原来的作用,即分别表示换行符,回车符,制表符,美元符。

196、例:13、字符簇::alpha:表示任何一个字母例::digit:表示任何一个数字例::alnum:表示任何一个字母或数字例::space:表示任何一个空白字符(半角空格,制表符)例::upper:表示任何一个大写字母例::lower:表示任何一个小写字母例::punct:表示任何一个标点符号例::xdigit:表示任何一个十六进制数字,相当于0-9a-fA-F例:14、以上字符或字符簇知识在Perl规范相关的函数中也适用,但以下字符只能在Perl规范下使用,即以下字符只能在Perl规范的相关函数中使用:d表示任意一个十进制数字(1个)D表示任意一个除十进制数字以外的字符(1个)s表示任何的一

197、个空白字符(空格,制表符)S表示除了空白字符以外的任何一个字符w表示任何一个字母、数字或下划线W表示除了字母、数字、下划线以外的任何一个字符例1:对表单提交过来的mail进行验证$email=$_POSTemail;if(eregi(_.0-9a-z-+(0-9a-z0-9a-z-+.)+a-z2,3$,$email)echoEmail合法;elseechoEmail不合法;例2:对表单提交过来的用户名进行验证$username=$_POSTusername;if(eregi(root)|(admin)|(administrator)|(anonymous)|(guest)$,$usernam

198、e)=false)echousername合法;elseechousername不合法;通过本章的学习要求大家掌握PHP中图象处理方法,必须在PHP配置文件php.ini中加载gd.dll或gd2.dll图象库。12.1PHP的图象处理12.1.1创建图象函数1、imagecreate-创建一个图象格式:intimagecreate(intx_size,inty_size)本函数用来建立一张全空的图形。参数x_size、y_size为图形的尺寸,单位为像素(pixel),建立成功返回图象操作句柄,否则返回false。2、imagecreatefromgif(或imagecreatefrompn

199、g或imagecreatefromjpeg)-创建一个gif(或png或jpeg)图象格式1:intimagecreatefromgif(stringfilename)格式2:intimagecreatefrompng(stringfilename)格式3:intimagecreatefromjpeg(stringfilename)本函式用来创建一张GIF或PNG或JPEG格式的图像,参数filename可以是本地的文件,也可以是网络的URL位址。返回对图像文件操作的句柄,可供其它的函式使用。本函数产生的GIF图,由于有版权的问题,因此在商业上的使用还要多加考量。3、imagecreatetr

200、uecolor-创建一个真彩图象格式:intimagecreatetruecolor(intx_size,inty_size)本函数用来建立一张全空的真彩图形。参数x_size、y_size为图形的尺寸,单位为像素(pixel),建立成功返回图象操作句柄,否则返回false。4、imagesx-返回图象句柄的宽格式:intimagesx(intim)本函数Imagesx返回图形im的宽度,单位:象素。5、imagesy-返回图象句柄的高格式:intimagesy(intim)本函数Imagesy返回图形im的高度,单位:象素。6、imagecopyresized-将原图的一部分区域复制到目标图

201、格式:intimagecopyresized(intdst_im,intsrc_im,intdstX,intdstY,intsrcX,intsrcY,intdstW,intdstH,intsrcW,intsrcH)本函数将原图的一部分区域复制到目标图,并可能造成原图变大或缩小,dst为目标图相关信息,src为原图相关信息。7、imagecopy-将原图的一部分区域复制到目标图格式:intImageCopy(intdst_im,intsrc_im,intdst_x,intdst_y,intsrc_x,intsrc_y,intsrc_w,intsrc_h)本函数将原图一部分复制到目标图,dst为目

202、标图相关信息,src为原图相关信息。12.1.2颜色处理函数:1、ImageColorAllocate-为图像分配颜色格式:intimagecolorallocate(intim,intred,intgreen,intblue)本函数用来匹配图形的颜色,供其它绘图函数使用。参数im表示图形的handle。参数red、green、blue是色彩三原色,其值从0至255。2、ImageColorTransparent-定义一种颜色为透明色格式:intimagecolortransparent(intim,intcol)本函数用来指定某颜色为透明背景色。参数im为使用为imagecreate打开图形

203、操作句柄handle。参数col为imagecolorallocate所匹配的颜色。返回新的透明背景色。3、ImageColorAt-返回图像中某一点的颜色值格式:intimagecolorat(intim,intx,inty)本函数用以取得图形中指定某点(x,y)的颜色索引值,格式为(rrr,ggg,bbb),im为图像创建函数创建图像的句柄。x为点的横坐标,y为点的纵坐标。12.1.3绘图函数1、ImageArc-画椭圆弧线格式:intimagearc(intim,intcx,intcy,intw,inth,ints,inte,intcol)本函数用来画椭圆弧线。坐标(0,0)为图片的左上

204、角,参数cx、cy为椭圆心坐标,参数w为椭圆水平轴长,参数h为椭圆垂直轴长,参数s及e分别为起始角与结束角(0-360),参数col为弧线的颜色。参数im表示图形的handle。2、ImageChar(ImageCharUp)-在水平(垂直)方向画一个字符格式1:intimagechar(intim,intfont,intx,inty,stringc,intcol)格式2:intimagecharup(intim,intfont,intx,inty,stringc,intcol)函数用来在水平(垂直)方向上输出的字符。原点坐标(0,0)为图片的左上角,参数font表示字体的大小,从最小的1起,

205、参数x、y是写入字符的坐标值,参数c为欲写出的字符,参数col为字符的颜色。参数im表示图形的handle。3、ImageLine-画一条直线格式:intimageline(intim,intx1,inty1,intx2,inty2,intcol)本函式将在图形上画出一条直线。从x1、y1连接到x2、y2,原点(0,0)为图形的左上角。参数col为直线的颜色。4、ImageRetangle-画一个矩形格式:intimagerectangle(intim,intx1,inty1,intx2,inty2,intcol)本函数可以在图片上绘出长方形。参数x1、y1及x2、y2分别为矩形对角线的坐标。

206、参数col表示矩形边框的颜色。5、ImageFill-填充图像格式:intimagefill(intim,intx,inty,intcol)本函数将图片坐标(x,y)所在的区域着色。参数col表示填充的颜色。6、ImageString(ImageStringUp)-水平(垂直)输出字符串格式1:intimagestring(intim,intfont,intx,inty,strings,intcol)格式2:intimagestringup(intim,intfont,intx,inty,strings,intcol)函数将在图片的水平(垂直)方向上输出字符串。参数font为字体,设为1到5表

207、示使用内定字形。参数x、y为字符串起点坐标。要输出的字符串为s上。参数col表示字串的颜色。7、ImageFilledPolygon-绘制多边形并对多边形区域着色格式:intimagefilledpolygon(intim,arraypoints,intnum_points,intcol)本函数将图片的封闭多边形区域着色。参数points为数组,代表多边形区域,数组的偶数元素为X坐标,奇数元素为Y坐标,例如points0=x0、points1=y0、points2=x1、points3=y1。参数num_points为多边形的转折点数目。参数col表示填充的颜色。12.1.4图像输出和释放1、

208、ImagePng(ImageGif或ImageJpeg)-把PNG(GIF或Jpeg)图像输出到浏览器或文件中格式:intimagegif(intim,stringfilename)intimagepng(intim,stringfilename)intimagejpeg(intim,stringfilename)本函数用来建立一张GIF|png|jpeg格式图形。参数im为使用ImageCreate所建立的图片句柄。参数filename可省略,若无本参数filename,则会将图片直接送到浏览器端,并且在送出图片之前要先使用header(“Content-type:image/gif”)或h

209、eader(“Content-type:image/png”)或header(“Content-type:image/jpeg”);发送标头字串到浏览器端,以顺利传输图片。若要使用透明背景的GIF图,也就是GIF89a的格式,需要先使用ImageColorTransparent设定透明背景。本函数产生的GIF图,由于有版权的问题,因此在商业上的使用还要多加考量。2、ImageDestroy-释放一个图像的所有资源格式:intimagedestroy(intim)本函式将释放与图像句柄im有关的所有内存资源。参数im为ImageCreate所建立的图片句柄。例1:创建图片的例子?phpheade

210、r(Content-type:image/gif);$im=imagecreate(500,300);if($im)$fill_color=imagecolorallocate($im,20,14,91);/填充颜色imagefill($im,0,0,$fill_color);/填充颜色$text_color=imagecolorallocate($im,90,200,100);/文字颜色imagestring($im,3,50,50,ASimpleTextString,$text_color);$line_color=imagecolorallocate($im,0,255,0);/边框颜色

211、imagerectangle($im,0,0,500,500,$line_color);$text_color=imagecolorallocate($im,255,200,100);/文字颜色imagechar($im,2,50,60,Drawing,$text_color);$line_color=imagecolorallocate($im,255,255,128);/边框颜色imagearc($im,200,200,60,120,0,360,$line_color);$line_color=imagecolorallocate($im,255,128,128);/边框颜色imageda

212、shedline($im,170,140,230,260,$line_color);$line_color=imagecolorallocate($im,200,100,100);/边框颜色$points=array(300,0,470,50,400,90,200,30,100,200);imagefilledpolygon($im,$points,5,$line_color);imagegif($im);elseecho创建图片失败;例2:图片验证码例子index.php:登录表单及处理页面?phpsession_start();if($_POST)if($_POSTusername=adm

213、in)&($_POSTpassword=admin)&($_POSTcheckcode=$_SESSIONcheckcode)echo登录成功!;exit;elseif($_POSTusername!=admin)echoalert(用户名错误,登录失败);history.back();elseif($_POSTpassword!=admin)echoalert(密码错误,登录失败);history.back();elseechoalert(验证码错误,登录失败);history.back();exit;elsesession_register(checkcode);for($i=0;$i无标

214、题文档用户登录用户名:密码:验证码: checkimg.php:生成验证码图片文件例3:图片缩略图例子index.php:?php$img=imagecreatefromjpeg(Royale.jpeg);$width=imagesx($img);$height=imagesy($img);$MAX_WIDTH=150;$MAX_HEIGHT=150;$scale=min($MAX_WIDTH/$width,$MAX_HEIGHT/$height);if($scale例4:图片水印例子index.php:文本水印例子index.php:通过本章的学习要求掌握XML文档的基本格式,PH

215、P如何对XML文档进行操作。13.1XML解析器以及PHP的XML函数库13.1.1XML(eXtensibleMarkup Language,可扩展标记语言),是用于标记电子文件使其具有结构性的标记语言。XML根据SGML(StandardGeneralizedMarkupLanguage,通用标记语言标准)制定出来的,所有XML可以看成是SGML的一部分子集,XML现在已经被广泛应用在互联网的各种领域。XML可以看作是HTML的扩展,在HTML的世界里,数据与数据的显示部分都是被揉合在一起的,例如数据,但在XML的世界里,数据与数据的显示是被分开了的,使得XML的数据可以在互联网上传播,但

216、应用不同的显示风格就会得到不同的效果。XML已经被作为了一种标准,在各种不同的数据库系统之间进行数据交换,因为XML的标准和规范以由W3C组织所认可并推广的。XML不是用来设计网页的,XML是一种数据文档,是一种在万维网应用中的新一代文标标准格式,用于保存应用程序所用到的各种数据,例如电子商务、图书目录、商品目录、公文电子文件等各种数据;但是未来的网页都会以XML为基础进行开发,因为XML的特性使得XML已经成为了在线和离线数据的所遵循共同语言,但因为XML支持离线数据,所以现在众多在线数据库厂商(如MySQLMSSQLOracle等)都在为自己的数据库系统增加XML文档数据功能,例如MSSQ

217、L就有在IIS中配置SQLXML功能的服务器端工具,并且MSSQL数据库内部已经增加了XML功能。XML的应用不仅体现在数据存储上,它的另外一个应用是:在以前,网页中某个版块如果要提取服务器端数据,必须要刷新整个页面才能完成,但当使用了XML技术之后,我们用不着刷新整个页面就可以更新页面中某个版块的显示内容,提高了B/S软件的性能。一个XML文档:ASP入门与提高清华大学出版社2003-6-1738PHP入门与提高清华大学出版社2003-7-2129JSP入门与提高机械出版社2002-3-1831ASP.NET入门与提高电子出版社2003-12-20在一个XML文档中,第一行必须是,用于指明本

218、文档格式为XML文档格式,浏览器将按XML格式文档进行处理,version指明XML的版本,目前通常采用的版本为xml1.0标准,encoding指定XML文档的字符集,一般为utf-8(unicode)或gb2312(中文)字符集。在一个XML文档中必须也只能有一个文档根标记(根元素),上例中为。在XML文档中所有标记必须有结束标记,否则XML文档为非法文档,如果一个标记为空标记,必须在标记内以/结束如上例中的:。在XML中每一个标记我们称之为一个元素,元素可以有属性,如中的price元素的属性有type属性。上例表示了几本书的有关信息,其中在docroot根元素中,有多个book元素,每一

219、个book元素表示了一本书的相关信息:如name元素表示了书名,name元素中的author属性表示了该书的作者,type属性表示了该书的出版次数;publisher元素表示了书的出版社;publishdate元素表示了书的出版日期;price元素表示了书的价格,price元素的type属性表示了价格所用的币制。13.1.2XML解析器-完成数据的分析及数据的提取功能1、基于“树”的XML解析器(DOM解析器):这种模式解析器一次分析整个XML文档,并把分析结果保存到一个树状结构中,并且XML提供了一个基于DOM(DocumentObjectModel)文档对象模型的接口对这颗“树”进行分析与

220、处理。2、基于事件的XML解析器(Expad解析器):这种模式解析器把XML文档看成是一系列事件组成的。每发生一个事件就调用一个相应的事件回调函数来处理。这种解析器从文档的开始一直扫描到结束,对每个事件做处理。事件主要包括标记开始,标记结束,数据处理开始等。例如,下面的标记相对应的事件:/标记开始事件testbegins/数据处理开始事件/标记结束事件基于事件的XML解析器是比较低级的XML处理器,但它非常灵活,且不会一次性将XML读到内存,所以消耗的资源较少,比DOM处理器快得多。13.1.3PHP的XML函数库Expad解析器相关函数:1、xml_parser_create-初始化XML解

221、析器格式:intxml_parser_create(stringencoding)2、xml_set_element_handler-设置xml开始和结束标记事件的回调函数格式:booleanxml_set_element_handler(intparser,stringstartElementHandler,stringendElementHandler)函数格式:functionstartElementHandler(intparser,stringname,arrayattribs)/你自己处理的代码函数格式:functionendElementHandler(intparser,str

222、ingname)/你自己处理的代码3、xml_set_character_data_handler-设置数据处理即读取元素数据的回调函数格式:booleanxml_set_character_data_handler(intparser,stringhandler)函数格式:functioncharacterData(intparser,stringData)/你自己处理的代码4、xml_parse-解析XML文档格式:booleanxml_parse(intparser,stringdata,intisFinal)5、xml_parser_free-释放XML解析器格式:booleanxml

223、_parser_free(intparser)6、xml_get_error_code-获取错误代码格式:intxml_get_error_code(intparser)7、xm_error_string-获取错误信息格式:stringxml_error_string(intcode)13.2SimpleXml对象1、simplexml_load_file方法:格式:intsimplexml_load_file(stringxmlfile)装载成功返回simplexml对象(并指向xml根节点),否则返回false2、simplexml_load_string方法:格式:intsimplexm

224、l_load_file(stringstring)装载成功返回simplexml对象(并指向xml根节点),否则返回false3、simplexml对象中节点的方法children()格式:array节点对象-children()成功返回节点的所有下级节点数组,否则返回false4、simplexml对象中节点的下级节点的访问方法格式:intsimplexml-节点名称数字下标成功返回节点名称的数字下标对应的节点对象,否则返回false5、simplexml对象中节点对象的属性访问方法attributes()格式:array节点对象-attributes()成功返回节点对象的所有属性数组,否则

225、返回false6、simplexml对象中节点对象的访问方法xpath格式:arraysimplexml-xpath(stringpath)成功返回simplexml对象中path对应的所有节点对象数组,否则返回false,path必须以/间隔各节点名称第一个/表示根节点13.3读取XML文件的标记读取下面的test.xml文档标记,并进行缩进,test.xml文档内容为:transferedfunctionnameexplanationechoreturnthecontentofavaribaleindex.php:?php$file=test.xml;$depth=array();func

226、tionstartElement($parser,$name,$attrs)global$depth;for($i=0;$i13.3处理、重新输出XML文件中的内容13.3.1返回HTML代码返回test.xml的HTML代码:index.php内容:HEAD,TITLECONTENT=TITLE,CONTENTS=BORDY,OBJECT=TABLEBORDER=1,LINE=TR,CELL=TD);functionstartElement($parser,$name,$attrs)global$map_array;if($htmltag=$map_array$name)print;func

227、tionendElement($parser,$name)global$map_array;if($htmltag=$map_array$name)print;functioncharacterData($parser,$data)print$data;$xml_parser=xml_parser_create();xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,true);xml_set_element_handler($xml_parser,startElement,endElement);xml_set_characte

228、r_data_handler($xml_parser,characterData);if(!$fp=fopen($file,r)die(不能打开XML文件);while($data=fread($fp,4096)if(!xml_parse($xml_parser,$data,feof($fp)die(sprintf(XML错误:%satline$d,xml_error_string(xml_get_error_code($xml_parser),xml_get_current_line_number($xml_parser);xml_parser_free($xml_parser);?13.3

229、.2取XML的内容进行输出test.xml内容:ASP入门与提高清华大学出版社2003-6-1738PHP入门与提高清华大学出版社2003-7-2129JSP入门与提高机械出版社2002-3-1831ASP.NET入门与提高电子出版社2003-12-20index.php的内容:?phpheader(Content-Type:text/html;charset=utf-8);$file=test.xml;functionstartElement($parser,$name,$attrs)switch(strtolower($name)casedocroot:print;break;casebo

230、ok:print;break;casename:/print;print;break;casepublisher:print;break;casepublishdate:print;break;caseprice:/print;print;break;functionendElement($parser,$name)switch(strtolower($name)casedocroot:print;break;casebook:print;break;casename:casepublisher:casepublishdate:caseprice:print;break;functioncha

231、racterData($parser,$data)print$data;$xml_parser=xml_parser_create();xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,true);xml_set_element_handler($xml_parser,startElement,endElement);xml_set_character_data_handler($xml_parser,characterData);if(!$fp=fopen($file,r)die(不能打开XML文件);while($data=

232、fread($fp,4096)if(!xml_parse($xml_parser,$data,feof($fp)die(sprintf(XML错误:%satline$d,xml_error_string(xml_get_error_code($xml_parser),xml_get_current_line_number($xml_parser);xml_parser_free($xml_parser);?实例一:留言簿MySQL数据库设计:数据库名GuestBookData数据表:createtableguestbook(idintauto_incrementprimarykey,hidet

233、inyintdefault0,contenttext,reply_contenttext,reply_timeint,usernamevarchar(20),sexvarchar(2),facevarchar(50),emotevarchar(50),emailvarchar(100),weburlvarchar(100),oicqvarchar(20),createipvarchar(20),createtimeint);字段说明:id留言唯一标志hide如果为1表示只允许管理员查看,为0表示所有人都可以查看content留言内容reply_content管理员回复内容reply_time管理员回复时间username留言人姓名sex留言人性别(男,女)face头像(对应在images/face文件夹中,保存文件名)emote表情(对应在images/emote文件夹中,保存文件名)email电子邮箱weburl个人主页(http:/格式)oicqQQ号码createip留言IP地址createtime留言时间实例二:新闻管理系统实例三:论坛系统

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号