第3章 动态页面编程技.doc_第1页
第3章 动态页面编程技.doc_第2页
第3章 动态页面编程技.doc_第3页
第3章 动态页面编程技.doc_第4页
第3章 动态页面编程技.doc_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

第3章 动态页面编程技术网页有两种,即静态网页和动态网页。静态网页在制作完并上传Web服务器后,修改就比较麻烦。要改变静态页面的内容,就需要编辑HTML文件,并重新上传到服务器;制作成本高、周期长,维护困难,只适合于不需经常更改页面内容的网站。其次,这种网页不能实现用户与服务器之间的动态交互。动态网页正好弥补了静态网页的不足,所谓动态Web页面是一个在服务器端的模板,利用该模板能快速响应查询或动态显示页面信息;即动态网页能根据用户的要求等而动态变化。这种页面不需要维护人员手动更新,它能根据时间、地点或浏览者而产生不同页面,目前绝大多数网站采用了动态网页技术,其页面内容主要来源于与网站连接的数据库。这种网站易于维护,在更新信息时,只需要编辑数据库信息,而不需要编辑页面格式。3.1 WEB服务器3.1.1 WEB服务器工作机制Web服务器和客户端之间通信需要协议,即超文本传输协议(HTTP)。这种协议决定了客户端和服务器之间的通信方式。客户端向服务器提出的访问请求基于HTTP格式。Web服务器能理解HTTP请求的内容,将需要的内容返回,并同时向浏览器传送一个与HTTP相容的信息,使其知道返回了的数据类型、数据长度等以及相关信息。要浏览网站的页面内容,首先要将页面放置在Web服务器上,Web服务器上运行着一个Web服务器软件,该软件通过计算机的一个特定端口监听来自客户端(如浏览器)的“请求”,解释这个请求,并且采取相应操作,然后对客户端请求作出响应。为了响应这个请求,Web服务器能用静态文档如页面或图片等作出相应,或把动态请求委托给服务器端的脚本引擎,这些服务器端程序将脚本代码进行解释、执行,将执行结果嵌套在HTML文件中,产生标准HTML文件,然后交由Web服务器作为对客户端请求的响应,以便客户端浏览。Web服务器能同时监听多个请求,允许多个用户同时连接Web站点。3.1.2 动态网页原理首先将用不同技术(如ASP、JSP、PHP等技术)编写的页面保存在相应的Web服务器的目录内,当客户端向Web服务器端提出访问请求时,Web服务器根据所请求页面的扩展名(如.jsp)来确定该页面所使用的哪种动态网页编程技术,然后把该页面转交给相应的脚本引擎(或称为脚本处理程序);脚本引擎将会扫描整个页面,并执行位于特定定界符(如)内的脚本代码,以实现不同的功能,比如发送电子邮件、访问数据库等,把执行结果返回Web服务器;最终,WEB服务器把上述执行结果同页面中的HTML内容以及客户端脚本传送到客户端。客户端看不到服务器端脚本代码,客户端用户所接收到的页面是标准的HTML格式的文件,与传统页面并没有任何区别;实际上页面内容已经经过了服务端处理,完成了服务器端的、动态或个性化设置。如图3-1所示。图3-1动态页面执行过程3.1.3 动态页面编程技术与B/S计算模型B/S模式是一种以Web技术为基础的模式。把传统C/S模式中的服务器部分分解为一个Web服务器、一个数据服务器或/和其它服务器(如邮件服务器、应用服务器),从而构成一个三层或多层结构体系。图3-2 B/S架构三层结构体系如图3-2所示。其中:第一层客户机是用户与整个系统的接口。客户的应用程序精简到一个通用的浏览器软件,如Netscape Navigator,微软公司的IE等。浏览器将HTML代码转化成图文并茂的网页。网页还具备一定的交互功能,允许用户在网页提供的申请表上输入信息提交给后台,并提出处理请求。这个后台就是第二层的Web服务器。第二层Web服务器将启动相应的进程来响应这一请求,并动态生成一串HTML代码,在其中嵌入处理的结果,并返回给客户机的浏览器。如果客户机提交的请求包括数据的存取,Web服务器还需与数据库服务器协同完成这一处理工作。第三层数据库服务器负责处理从Web服务器发出的SQL请求,并返回结果。3.2 动态页面编程技术简介HTML是编写网页的基本语言,只能用于静态的网页。当今的Web不再是早期的静态信息发布平台,不仅需要Web提供静态信息,还需要提供个性化功能,如收发电子邮件,从事电子商务等。因此,必须使用更新的网页编程技术制作动态网页。3.2.1 动态页面编程技术的特点: 交互性,即页面会根据不同的用户要求和选择而作出动态改变和响应; 自动更新,无须人工更新每个Web页,而会自动生成新的页面; 网页因时因人因地而变,即当不同时间,不同人访问从不同地区访问同一网址时,可能产生不同页面。3.2.2 几种常用的动态网页编程技术动态技术最初是通过CGI(Common Gateway Interface,公共网关接口)来实现的,不过CGI比较复杂,学起来有些困难。随着Internet的发展,出现了很多动态技术,目前,常用的动态网页编程技术有ASP、PHP和JSP等。ASP(Active Server Pages,动态服务器页面)是Microsoft公司开发的一套服务器脚本语言,利用ASP可以建立动态的、交互的、高效率的Web服务器应用程序。PHP(Hypertext Preprocessor,超文本预处理器)是跨平台的服务器端嵌入式脚本语言。PHP的语法混合了C、Java、Perl以及PHP式的新语法,可以比CGI(Command Gataway Interface,公用网关接口)或Perl更快速地执行动态网页。PHP能支持多种数据库,如Oracle、Sybase、MySQL、Informix、Microsoft SQL Server等。PHP是完全免费的,它常与MySQL以及Apache配合使用,构建完全免费的Web开发或使用环境。可以通过/网址查看和下载PHP最新版本,目前最新版本是PHP5.2.9。JSP(Java Server Pages,Java服务器页面)它是由Sun Microsystem公司倡导,多家公司参与而建立的动态网页技术标准,主要用于开发动态网页。JSP继承了Java语言的特点,允许Web开发人员开发和维护与平台无关、信息丰富、动态的Web页面,它能使Web开发人员轻易搭建网络平台,建立起功能强大的Web网站。130958494123.3 PHP 语法简介PHP(Hypertext Preprocessor,超文本预处理器)是一种广泛使用的、跨平台的、开放源代码的、可免费下载的服务器端脚本语言,可通过在HTML网页中嵌入PHP脚本语言, 用于创建动态和交互的网站。PHP的语法与C、Perl很相似。PHP文件包含HTML标签以及脚本,文件文件后缀是.php、.php3 或.phtml。在浏览器中查看源文件时,看不到PHP源代码,而只能看到PHP文件的输出(纯HTML),在结果返回浏览器之前,脚本就已经在服务器执行了。PHP的优势在于,可运行于不同平台(Windows、Linux、Unix);几乎与所有Web服务器兼容,如Apache、IIS等;易于学习;可高效地运行在服务器端。如何使用?在Windows或者Linux机器上安装Apache服务器、PHP和MySQL。PHP常搭配Apache(Web服务器)使用。不过它也支持ISAPI,并且可运行在微软Windows IIS平台上。一般有两种选择:Win/Linux+Apache+MySQL;Win+PWS(或IIS)+MS SQL Server。Win/Linux+Apache+MySQL比Win32+PWS(或IIS)+MS SQL Server性能好。由于PHP就是在Linux+Apache+MySQL这组合下面开发出来的,所以,PHP在该组合下可以发挥最大。PHP功能强大并不是PHP语言本身,而是它的强大的扩展模块,因为这些扩展模块使得任何脚本语言都不能与之相提并论。另外,Linux+Apache+MySQL的组合是完全免费的,而Win32+PWS(或IIS)+MS SQL Server组合的开发成本费比较高。3.3.2 基本语法1 PHP代码解析原理PHP语法与C类似,但也不有同的地方。先看如下简单例子:PHP测试?php echo Hello World;?PHP输出文本的两个基本方法:echo和print。这8行代码的PHP程序并不需要经过编译、连接等复杂过程,只要把它存放可执行PHP语法的服务器中,将它存为扩展名为“.php”文件。若文件后缀为.html,则其中PHP代码不被执行。在浏览器地址栏中输入:(或localhost)/somedirectory/helloworld.php,就可在浏览器上看到“Hello World”字符串出现在浏览器窗口中。默认情况下,Web服务器会把以.html文件直接发送给用户浏览器,在没有遇到分离PHP代码标签时,将会把代码直接发送给客户浏览器;当遇到用来从HTML代码中分离的PHP代码标签时,就进入PHP模式,分离PHP代码标签内的代码并解析为标准HTML代码,然后将其发送给客户端浏览器。在浏览器查看上述PHP程序源代码,如下:PHP测试Hello World 在书写PHP代码时,要注意:PHP代码行要以semicolon“;”结束,即semicolon是PHP语句的分界符号。在PHP中,用/注释单行,用/*和*/注释多行代码,但注释不可嵌套。2 PHP代码嵌入HTML的方法PHP代码一般和HTML标签混合使用。PHP引擎只对PHP代码标签内的代码进行解析。常见的HTML嵌入PHP标签的方法有 :(1)以“”结束,推荐使用;如: (2)简短方式,以“”结束;如:(3)以“”开始,以“”结束;如: echo hello world;(4)当然也可用类似ASP风格的方法,以“”结束的方法。3 PHP文件的引用服务器端引用(Server Side Includes,SSI)用于创建在多个页面可重复使用的函数、页眉、页脚或元素,为开发者节省时间,维护方便。其机制是通过include()或require()函数,在服务器执行PHP文件之前,在文件中插入相应的文件内容。include函数一般放在流程控制的处理区段中。PHP程序在读到include文件时才将它读进来。它的使用方法是include(MyFunction.php)。require函数一般放在程序的最前面,PHP程序在执行前就会先读入require所指定引入的文件,使它变成PHP文件的一部分。这两个函数在处理错误的方式上也不同,include()函数会生成一个警告(脚本会继续执行),而require()函数会生成一个致命错误(fatal error)(脚本会停止执行)。因此推荐使用require()函数。4 常量常量是在程序运行中不变的量。常量分为自定义常量和内置常量。 自定义常量。用函数define来自定义常量。调用方法:define(名字,值)。如:define(PI,3.1415926); define(RED,#ff0000);常量一般全部大写的字母表示。常量被定义后,在代码中就可以直接使用了。如:echo(=PI);在解释时,将PI替换为3.1415926,但包含在引号中的与字符常量名一样的值不会被替换。如:echo(=PI ); 内置常量PHP常用的内置常量有:TRUE和FALSE分别用来表示真值(1)和假值(0)。PHP_VERSION用来表示正在运行的PHP解释器的版本号。PHP把一些与PHP有关的环境信息也作为预定义常量。可以调用phpinfo()函数,查询机器上的常量。具体有那些?5 变量PHP和JavaScript等脚本语言一样,属于弱类型语言,即在使用前不需要声明变量的类型和名称。变量命名规则:所有变量都必须以字符“$”开头,但是变量名必须是由英文字母、数字和下划线组成,而且必须以字母或下划线开头;变量名中不能含空格,若由多个单词组成,用下划线隔开或首字符大写,如$my_string,或$myString。(1) 变量的类型在PHP中,变量类型只有五种: 整数型(integer)$a=1234;/定义十进制整数。$b=012;/定义八进制。$c=0xac;/定义十六进制。 浮点型(double)$a=1.234;$b=5.2e4;/浮点类型的变量,其初值为52000 字符串型(string)字符串值必须用引号括起来(引号不属于字符串的值)。 数组型(array)与C等语言不同,PHP在声明数组时,不用指出数组大小;数组可以是一维的、二维的或多维的;数组的定义和存储灵活,访问方便、也灵活。数组中存储的元素可以是整数、浮点或字符串,甚至可以是数组。数组用于在单变量名中存储多个值,数组元素的表示利用下标法,每个元素都有其ID(标识)。下标可以用数字表示(与C类似,下标从0开始),也可用字符串表示。如:$arr0=first element;$arr1=second element;$arrrow1=23;$arrrow2=12.1;若要将连续的数据加进数组,只需要将数据赋予不带下标的数组变量即可。如:$arr=first;$arr=second;$arr=third;数组中的元素类型可以是同一类型,也可以是不同类型。如:$username=李四;$userage=20;$userincome=1400.0;? 对象型object(2)变量的作用域与其它编程语言一样,PHP也有局部变量和全局变量。PHP的全局变量是定义在函数外部的变量。全局变量对于整个PHP程序来说都可以访问的,用来保存公有信息。PHP的局部变量存定义于函数中,随着函数调用而分配内存,局部变量对于外部来说是隐藏的,是无效的,随着函数调用结束而自动消失。PHP和C语言中的全局变量引用有所区别:C语言中的全局变量可以直接在函数内部引用,而且它还可以被局部变量覆盖,但在PHP在函数内部使用局部变量时,必须用关键字global显式说明,而不会直接用引用全局变量。下面程序是错误的,变量$a是全局变量,如果在函数引用时必须用关键字“globle”加以说明,否则它会认为是一个未赋初值的局部变量。上述程序中,在语句“echo($a);”前面加上语句“global $a;”就正确了。6 运算(操作)符PHP的操作符与C语言中的几乎一样。运算符的优先级与C语言相同。 算术运算符+(加)、-(减)、*(乘)、/(除)、%(取余)、+(递增)、-(递减)。 赋值运算符OperatorExampleIs The Same As=X=yx=y+=X+=yx=x+y-=x-=yx=x-y*=X*=yx=x*y/=x/=yx=x/y.=x.=yx=x.y%=X%=yx=x%y注意:赋值运算符左边是变量,右边是表达式。 关系运算符比较运算符连接的表达式总会返回一个布尔值,如true或false。=、!=、=、(位右移)、操作符用来访问一个对象的属性和方法。7 函数函数是一种可以在需要时被调用和执行的代码块。函数的功能相对独立,一次定义,可在程序其他部分多次被调用。PHP的真正威力源自于它的函数,有700多个内建函数。要使用函数,必须先要定义该函数,函数是用关键字function来声明的,语法为:function 函数名(参数列表) 函数体 return返回值;l 函数名,可以大写也可以是小写,如在定义时用大写的函数名,而调用时用小写的函数名。l 函数参数,用户的信息可以通过函数的参数来进行传递。如果有多个参数,可用逗号隔开。PHP的参数传递方式有四种:值传递、引用传递、默认方式和可变参数列表。?函数的调用几个重要的内建函数:Date()函数用于格式化时间或日期,把时间戳格式化为可读性更好的日期和时间。时间戳(Timestamp)是自1970年1月1日(00:00:00 GMT)以来的秒数。语法:date(format,timestamp)date()函数的第一个参数规定了如何格式化日期/时间,是必需的。它使用字母来表示日期和时间的格式,d-当月中的天(01-31),m-当前月(01-12),Y-当前年(四位数)。date()函数的第二个参数规定了时间戳,是可选的,其默认是当前日期和时间。strlen()函数用于确定字符串的长度。这个长度可用于循环或函数中,特别在要知道字符长何时结束时。strpos()函数用于搜索字符串内的字符串或字符。若匹配,则返回首次匹配的位置,若不匹配则返回。注意字符串的首位是0而不是1.8流程控制语句PHP的控制语句有条件语句、Switch语句和循环语句。 条件语句if.else语句,在条件成立时执行一块代码,条件不成立时执行另一块代码;elseif语句,与if.else配合使用,在若干条件之一成立时执行一个代码块;l if语句语法:if(条件)代码或代码块“条件”必须是个布尔值,如果为true,执行“代码或代码块”;所有不满足的条件、0、空字符串、未定义的变量和内置常量false都被当成是假(false)。如:if($sex=女)echo(欢迎你,女士);if(0)echo(does not print);/不会执行echo语句。l else语句语法:if(表达式)语句块1 else 语句块2说明:“表达式”为“true”时,执行语句块1,否则执行语句块2l ElseIf语句若想在任一条件满足时,就执行某种代码;则使用ElseIf语句if (condition) code to be executed if condition is true;elseif (condition) code to be executed if condition is true;else code to be executed if condition is false; Switch语句若条件很多,基于不同条件,执行不同动作。这时用IF语句不方便,而要用开关语句。语法:Switch (表达式) case 值1:语句块1;break; case 值2:语句块2;break; case 值n:语句块n;break;default: 语句块n+1;若表达式不同于上述各标签;switch语句先计算“表达式”,并把它和case子句的每个值作比较。如果匹配,则执行与case关联的代码。如果没有case为真,则使用default语句 在C、Java等语言中,case的值必须是简单的标量;而PHP中case的值可以是任何数字、字符串或者其它类型变量。如:数组和对象是不能作为case子句中的PHP数据类型。 循环语句在编写代码时,经常需要让代码块运行多次。这可在代码中使用循环语句来完成。循环就是把代码块执行指定次数或到满足特定条件为止。PHP有下述四种循环语句:While,只要指定的条件成立,则循环执行代码块。do.while,首先执行一次代码块,然后在指定的条件成立时重复这个循环。for,循环执行代码块指定的次数。foreach,根据数组中每个元素来循环代码块。l while语法:while(条件表达式)语句块说明:先计算“条件表达式”,如果为true,就执行代码块,直到表达式的值为false。如:?$i=1;$sum=0;while($il dowhile语法:do语句块while(条件表达式);do.while语句会至少执行一次代码块;只要条件成立,就会重复进行循环。即先执行语句块,再判断“条件表达式”,如果为“true”,再执行语句块,至到“条件表达式”为“false”?$i=1;$sum=0;do $sum+=$i; $i+;while($il for语法:for(表达式1;表达式2;表达式3)代码块for语句有三个参数。表达式1是个赋值语句,用来初始化循环控制变量;表达式2是条件,在每次重复开始的时候被检测,如果为true,就执行代码块,否则终止循环;表达式3在每次循环完成后执行,用来改变循环变量的。如果表达式1或表达式3参数中包括了多个变量,需要用逗号进行分隔。而条件必须计算为true或者false。如:for($i=1,$sum=0;$i=100;$i+)$sum+=$i;echo(1+2+100=$i );实际上,每个for语句都可用while语句代替,但for循环的结构更好,代码更紧凑。l foreachforeache语句用来操作数组或对象的。foreach语句用于循环遍历数组。每进行一次循环,当前数组元素的值就会被赋值给value变量(数组指针会逐一移动),以此类推。语法:foreach (array as value) code to be executed;下述例子中,是显示数组元素值的一个循环:?php$arr=array(one, two, three);foreach ($arr as $value)echo Value: . $value . ;?9 类与对象类就是指由变量和作用于变量的函数组成的集合。类提供了一种对现实世界中事物的描述方式。通过有效地使用类,可以将描述同一对象的多个变量和函数组合起来整体使用,从而使编写出来的程序更直观,更合理,更易于维护。在类中可以使用“$this”指代类本身,使用“-”运算符引用类中的各个变量或函数。类中创建的与类同名的函数称为构造函数。构造函数在创建新的对象实例时自动执行,从而将类中设定的默认值赋予该对象实例。 可以通过创建对象实例的方法使用已经定义的类。语法格式如下: 一个类可以创建多个对象实例,其中每个对象实例都继承该类的默认属性,可以调用类中的所有变量和函数。使用关键字 extends 来继承一个类,如:class B extents A PHP没有多重继承。子类必须依赖于一个且必须已存在的基类。在子类中如何使用父类?,使用 : 操作符,且有两种方式:一种是直接用父类名,如:A:example();一种是用 parent 关键字,如:parent:example();建议采用 parent: 来引用父类。3.4 高级编程技术(内置函数的应用)3.4.1 表单和用户输入PHP的$_GET、$_POST和$_REQUEST用于检索表单中的值。$_REQUEST具有$_POST和$_GET的功能,通过post和get方法提交的所有数据都可以通过$_REQUEST数组获得,但是$_REQUEST比较慢。1 $_GET变量$_GET变量是数组,用于收集来自表单中method=get的值。Name: Age: 用户点击提交按钮时,URL显示为:/welcome.php?name=Peter&age=37welcome.php文件通过$_GET变量获取表单数据:Welcome .You are years old!在使用$_GET变量时,所有变量名和值都会显示在(浏览器地址栏)URL中,发送信息量也有限。在发送密码或敏感信息时,不要使用这个方法。不过,正因为变量显示在URL中,可以在收藏夹中收藏页面。2 $_POST变量通过HTTP POST发送的变量不会显示在URL中,变量没有长度限制。一个表单实例:Name: Age: 当用户填写双数表单并单击提交按钮时,表单数据会被传送给welcome.php文件:Welcome .You are years old.在使用$_POST变量时,所有变量名和值都不会显示在(浏览器地址栏)URL中,发送信息量也不限。在发送密码或敏感信息时,使用这个方法。不过,正因为变量不显示在URL中,不能收藏这种页面。$_post和$_get的比较:l get是从服务器上获取数据,post是向服务器传送数据。l get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。l 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。 l get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 l get安全性非常低,post安全性较高。3 $_REQUEST变量$_REQUEST变量包含了$_GET,$_POST以及$_COOKIE的内容,可用来取得通过GET和POST方法发送的表单数据的结果。例子:Welcome .You are years old!3.4.2 文件处理1 打开文件可用fopen(filename,mode)函数打开文件,第一个参数是要打开的文件名,第二个参数是打开文件的模式:文件通过下列模式来打开:r,只读。在文件开头开始。r+,读/写。在文件开头开始。w,只写。打开并清空文件的内容;如果文件不存在,则创建新文件。w+,读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。x,只写。创建新文件,如果文件以存在,则返回FALSE。x+,读/写。创建新文件。如果文件已存在,则返回FALSE和错误信息。a,追加。打开并向文件文件的末端进行写操作,如果文件不存在,则创建新文件。a+,读/追加。通过向文件末端写内容,来保持文件内容。如果fopen()无法打开指定的文件,则返回0(false)。2 关闭文件fclose()函数用于关闭已打开的文件。例如:3 检测是否到达文件的末端用feof()函数检测是否已达到文件末端(EOF)。在循环遍历未知长度的数据时,feof()函数很有用。在w、a以及x模式时,无法读取打开的文件。if (feof($file) echo End of file;4 逐行读取文件用fgets()函数逐行读取文件。在调用该函数之后,文件指针会移动到下一行。例如:?php$file = fopen(welcome.txt, r) or exit(Unable to open file!);/Output a line of the file until the end is reached while(!feof($file) echo fgets($file). ; fclose($file);?5 逐字读取文件用fgetc()函数逐字符地读取文件。在调用该函数之后,文件指针会移动到下一个字符。例如:3.4.3 文件上传允许用户从表单上把文件上传到服务器很有用,如发送电子邮件的附件等。下面表单:Filename: 标签的enctype属性规定了在提交表单时要使用哪种内容类型,在表单需要二进制文件时,使用multipart/form-data。标签的type=file属性规定应该输入文件。当在浏览器中预览时,就看到输入框旁边有一个浏览按钮。1 创建上传脚本下述upload_file.php文件含有上传文件的代码: 0) echo Error: . $_FILESfileerror . ; Else echo Upload: . $_FILESfilename . ; echo Type: . $_FILESfiletype . ; echo Size: . ($_FILESfilesize / 1024) . Kb; echo Stored in: . $_FILESfiletmp_name; ?通过使用PHP的全局数组$_FILES,可以从客户计算机向远程服务器上传文件。其第一个参数是表单的input name,第二个下标是name、type、size、tmp_name或error: $_FILESfilename,被上传文件的名称; $_FILESfiletype,被上传文件的类型; $_FILESfilesize,被上传文件的大小,以字节计; $_FILESfiletmp_name,存储在服务器的文件临时副本的名称; $_FILESfileerror,文件上传中导致的错误代码;这种文件上传方式非常简单,基于安全性考虑,应当增加对上传文件的限制,如只能上传.gif或.jpeg文件,并且必须小于20kb:if ($_FILESfiletype = image/gif)| ($_FILESfiletype = image/jpeg)| ($_FILESfiletype = image/pjpeg)& ($_FILESfilesize 20000)对于IE,识别jpg文件的类型必须是pjpeg,对于FireFox,必须是jpeg。2 保存上传文件在上面例子中,在服务器的PHP临时文件夹创建了被上传文件的临时副本。这个临时的复制文件会在脚本结束时消失,因此需要把它拷贝到另外位置保存。例如: move_uploaded_file($_FILESfiletmp_name, upload/ . $_FILESfilename); echo Stored in: . upload/ . $_FILESfilename;当然,首先要检测是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。这个例子把文件保存到upload文件夹中。3.4.4 用户标识文件cookie是驻留在用户计算机中的小文件,常用于识别用户。每当相同的计算机通过浏览器请求页面时,它同时会发送cookie。通过PHP,就能够创建并取回cookie的值。1 设置函数setcookie()用于设置cookie。setcookie()函数必须位于标签之前。语法:setcookie(name,value,expire,path,domain);创建名为user的cookie,并为它赋值Alex Porter,同时规定在一小时后过期:在发送cookie时,cookie的值会自动进行URL编码,在取回时进行自动解码(为防止URL编码,请使用setrawcookie()取而代之)。2 取回Cookie的值$_COOKIE变量用于取回cookie的值。在下面例子中,取回名为user的cookie值,并显示在页面上:3 确认在下面例子中,使用isset()函数来确认是否已设置cookie:?php if (isset($_COOKIEuser) echo Welcome . $_COOKIEuser . !;else echo Welcome guest!;?4 删除 cookie当删除cookie时,应当使过期日期变更为过去时间点,如:如果应用程序遇到不支持cookie的浏览器,就不得不采取其他方法在应用程序中从一张页面向另一张页面传递信息。一种方式是从表单传递数据。下面的表单在用户单击提交按钮时向welcome.php 提交了用户输入:Name: Age: 取回welcome.php中的值:Welcome .You are years old.3.4.5 会话标识文件当在计算机上运行应用程序时,用户会打开,操作,并关闭它,这很像一次会话;计算机清楚使用者是谁、何时启动和终止应用程序。但在因特网上,存在的问题是:服务器不知道使用者及其所作所为,这是由于HTTP协议不能维持状态。session解决了这个问题,即在服务器上存储用户信息(比如用户名称、购买商品等)。以便随后使用或更改用户会话设置。Session变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。不过,会话信息是临时的,在用户离开网站后将被删除。如果需要永久储存信息,可以把数据存储在数据库中。Session的工作机制是,为每个访问者创建其唯一id(UID),并基于该UID存储变量。UID存储在cookie中,或通过URL传输。1 启动会话在把用户信息存储到session之前,首先必须启动会话。session_start()函数必须位于标签之前:/some code to be executed;上面代码会向服务器注册用户会话,以便保存用户信息,同时会为用户会话分配其UID。2 $_SESSION变量使用$_SESSION变量存储和取回session信息:上例输出为:Pageviews=1在下面例子中,创建一个简单page-view计数器。isset()函数检测是否已设置views变量。如果已设置views变量,就累加计数器;否则,就创建views变量,并设置为1:3 删除session数据如果希望删除某些session数据,可以使用unset()或session_destroy()函数。unset()函数用于释放指定的session变量:也可以通过session_destroy()函数彻底终结session,例如:session_destroy()将重置session,将失去所有已存储的session数据。3.4.6 发送电子邮件PHP mail()函数可用于

温馨提示

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

评论

0/150

提交评论