表单处理和PHP函数-m.ppt
表单处理和PHP函数库,本节内容HTML表单与PHP处理程序PHP的调试与解决方法PHP函数,教学目标,HTML表单是静态网页和动态网页的结合点,理解HTML表单标记的主要成员的构成和数据属性,了解这些数据成分在向PHP程序变量转换过程中所产生的对应关系和变量形态PHP函数库的实质是一种通过CGI接口执行的网络应用指令集,要求掌握函数的一般性应用和一般程序函数。,概述,在Web上浏览时可以看到各式各样的输入表单(Form),有些只有一个文本输入框(如G之类的搜索引擎)和提交(submit)按钮,有些则比较复杂(如一些免费电子邮箱的注册表单),除了文本输入框之外,还有单选按钮、复选框、下拉选单等,虽然复杂程度不同,但表单的组成元素却是相同的。,概述,Web的交互性是从使用HTML设计的表单将数据发送到Web服务器开始的,但是HTML不是程序设计语言,需要CGI作为一种中介CGI的功能包括审核用户从表单或HTTP请求的URL地址栏发来的数据、将数据存入数据库、或依据用户请求从数据库取出数据并通过动态网页发给浏览器等一系列工作进行处理,概述,CGI动态网页机制包括两个 部分:首先由用户从HTML网页向服务器发送输入数据用户数据被CGI程序处理并产生新的HTML网页,HTML表单与PHP处理程序,在浏览器的URL地址栏输入网页的名称和相关参数,而这种用户数据的输入方式显然是很不方便的。尤其不适合普通浏览器用户的使用。在HTML中,一般浏览器用户是通过表单完成的。,HTML表单与PHP处理程序,HTML表单与PHP处理程序,HTML表单与PHP处理程序,一个简单的HTML表单 姓名:兴趣:,HTML表单与PHP处理程序,对简单表单的PHP程序处理Welcome!,HTML表单与PHP处理程序,注意:含有表单的文件往往是一个“纯”HTML文件,比如上例的表单文档就是一个有“.htm”后缀的文件。HTML表单是一个容器元素,即有开始和结束标记,在中至少包含两个属性:“ACTION”和“METHOD”。,HTML表单的ACTION,ACTION属性的值表示该表单的处理方法,也就是表单提交后需要执行的CGI程序名(包括路径)由于本课程的CGI程序用PHP编写,因此,一般ACTION属性中填写的就是对应的PHP程序或动态网页的名称。表示在用户提交表单后,由Web服务器上的echo.php程序来处理用户所提交的数据(该文档与form.htm在同一目录中)。,HTML表单的METHOD,METHOD说明本表单向服务器发送输入信息时的使用方式一般有两种选择:POST和GET,默认的方式是GET。,HTML表单的METHOD,使用GET时,HTTP的客户端将表单上用户的输入信息作为字符串附加在ACTION所设定的URL后面,中间用“?”和“&”隔开,然后把整个字符串传送到服务器端PHP程序会用$QUERY_STRING内置变量获取表单所传入的信息。但由于系统内置变量的长度限制了输入字符串的长度,因此,用GET方式所能传送的数据长度受到限制(一般为2k字节),HTML表单的METHOD,而使用POST方法时,HTTP会将表单的输入信息进行包装后发送,而不是附加在Action所设定的URL之后发送,CGI程序中可以用$CONTENT_LENGTH内置变量来确定传入数据的长度,并通过标准输入(stdin)将内容读出。使用POST方法,用户数据的长度没有限制,Form元素的用法,在与之间,可以使用除以外的任何HTML的容器元素中可以使用的标记,这使FORM变得非常灵活。要让浏览者能通过HTML网页输入信息,光一个标记是不够的,还需要、这三个特殊标记的配合。,Form元素的用法,在HTML中,表单一般有如下结构:,表单中常用元素与PHP的关联,表单是HTML文档与PHP程序的重要数据输入接口在表单中所有具体数据的输入和提交都离不开三个重要的表单元素,它们分别是,、和 PHP(和其他CGI程序)的重要任务是将数据从HTML网页中解析出来,并处理成本身程序的变量PHP 处理此项任务简单而快捷,INPUT元素,INPUT是一个单个元素,没有结束标记,其格式如下:INPUT是输入单行文本时经常使用的元素。INPUT中常用的属性有六个:TYPE、NAME、SIZE、VALUE、MAXLENGTH、CHECKED。TYPE表示数据输入类型,也决定了INPUT元素的表现形式。其它五个属性因TYPE的值不同而不同,INPUT元素,用于文本字符输入的TEXT类型这是INPUT元素的默认类型。如果输入类型设定为TEXT,INPUT的其它五种属性的含义分别是:NAME:将输入值传给CGI时与输入值相对应的名称SIZE:输入窗口的长度。默认值为20,以字节为单位VALUE:预先信息MAXLENGTH:最多输入的字节数。CHECKED:TEXT类型不能使用此属性,INPUT元素,INPUT元素的属性示例姓名:兴趣:,INPUT元素,INPUT元素,INPUT元素,用于口令输入的PASSWORD类型这种类型与TEXT类型使用起来很相似,不同之处是用户输入时不显示输入内容,而是用星号“*”回显。PASSWORD类型的INPUT元素的其它五种属性与TEXT类型相同。使用“PASSWORD”类型时,口令字符的输入会被掩饰,可以起到一定的安全作用。但其在网络上仍以明码形式传输,容易为他人截获,必须加以注意。,INPUT元素,用于单选的RADIO类型 这种输入类型提供表单上单选按钮,用户可以在网页上列出一组(两个或两个以上)单选按钮选项,每个选项前有一个圆形按钮,用户只能在这一组选项中选其中一项。由于选择是唯一的,同组元素的“NAME”属性必须取相同的值,但相应的“VALUE”属性值各不相同。,INPUT元素,的类型为“RADIO”时,其它五种属性的含义分别是:NAME:将输入值传给CGI时对应的名称SIZE:RADIO不用此属性VALUE:每个选项对应的值MAXLENGH:RADIO不用此属性CHECKED:预选项,RADIO类型的INPUT语句的示例 单选按钮例程单选钮应用示例性别:男女血型:ABABO,INPUT元素,处理Radio按钮的PHP程序案例 单选按钮例程 单选按钮数据输送示例 您是性,血型 型。,INPUT元素,CHECKBOX类型这种类型提供复选按钮进行多项选择。设计时可以在网页上布置一个或一个以上复选按钮选项,每个选项的前面有一个方框,用鼠标点中方框,该选项即被选中用户可以根据需要选择多个复选项,当然也有可能一项也不选。由于每一项都可能被选中,因此,在同属一组的每个标记中,各自的NAME属性值必须是唯一的,INPUT元素,当INPUT元素为“CHECKBOX”时,其它五种属性的含义分别是:NAME:将输入值传给CGI时相对应的名称SIZE:CHECKBOX不用此属性VALUE:每个选项对应的值MAXLENGTH:CHECKBOX不用此属性CHECKED:预选项,INPUT元素,复选按钮例程复选按钮例程复选钮应用示例请选择您擅长的一种或几种编程设计语言:C+ VBscript,复选按钮数据传送及处理 复选框数据传送效果显示;for($I=0;$I.($choose$I);echo;?,INPUT元素,SUBIMT类型这种INPUT元素在表单网页上产生一个提交按钮。单击该按钮,用户输入的信息即被传送给服务器。一般表单中提交按钮是必不可少的。SUBMIT类型的INPUT元素,须设置VALUE以说明按钮的用途,如VALUE=传送。如果不设VALUE的属性值,在中文IE 5.0中提交按钮上会自动出现“提交查询内容”的字样,INPUT元素,RESET类型这种类型让浏览器产生一个重置按钮。单击该按钮,用户在表单中已输入的信息被全部清除,以便用户重新输入。与SUBMIT类型一样,RESET类型也只有VALUE属性。如果不指定VALUE属性,在中文IE 5.0中,按钮上会出现重置字样,INPUT元素,HIDDEN类型这种属性将INPUT元素的区域和其中所携带的信息隐藏起来,信息并不显示在屏幕上。那么,定义HIDDN类型这样一个表单元素的作用是什么?,INPUT元素-HIDDEN类型,假设我们创建了一个简单的表单form1。form1提交后,用户编写的PHP程序根据form1提供的信息创建了第二个表单form2,并将form2发送给用户。用户提交form2,而处理form2的PHP程序同时需要form1和form2提交的信息来做出应答。,由于HTTP协议的特点,浏览器和服务器之间只能用请求-应答的方式通讯、它们彼此之间没有持久的连接,那么如何才能把form1中的信息传递到处理form2的PHP程序中去呢?我们可以考虑采用以下两种方法:把form1中的信息写到服务器中的某个临时文件中,当需要时,处理form2的PHP程序可以读取临时文件中的数据,等处理完后,即可删除临时文件,以免浪费服务器的磁盘空间。处理form1的PHP程序在创建form2的同时把form1中的信息加到form2中。当然,这些信息不必让用户再次看到,所以应当把它们放在HIDDEN类型的INPUT区域中。,SELECT元素,在FORM中使用SELECT元素可在浏览器中显示一个下拉列表或带有滚动条的列表框,用户可在列表中选择一或多个选项。这一点和INPUT元素中的单选按钮和多选按钮作用相似,只是形式上有所不同。SELECT有开始和结束标记,全部选项必须包含在SELECT的开始和结束标记中。,SELECT元素,SELECT元素形式如下:在元素的开始和结束标记之间,有几个OPTION元素,就会在表单的下拉列表中出现几个选项。选项的具体内容应该写在每个OPTlON之后。OPTION有SELECTED属性,表示该选项已经预选。若在元素中设定MULTlPLE属性,则可以有多个OPTION元素带有SELECTED属性。,SELECT元素,SELECT元素带有NAME、SIZE和MULTIPLE三个属性:NAME属性和INPUT中的同样,当FORM被提交时,作为所携数据的名称。SIZE属性控制同时显示在列表中的选项条数,如果没有指定SIZE属性,则默认值为1,即平时只显示一条选项。只有用鼠标单击栏框右边向下的箭头后才出现下拉列表的全部选项。MULTIPLE属性允许用户一次选中多个选项。如果不指定MULTIPLE属性,则一次只能选一项。,SELECT元素,SELECT元素的用法请选择您最擅长编程设计语言:C+PHP Shell VB Script,SELECT元素的用法请选择您最擅长编程设计语言:C+PHP Shell VB Script,多选提交,.($choose_lang$I);?,TEXTAREA元素,在FORM中使用该元素,浏览器窗口中便会出现一个可以输入多行文字的输入框,用户即可在该输入框中留言。TEXTAREA元素有开始和结束标记,使用时类似于TEXT类型的INPUT框,区别仅在于INPUT只能输入单行文本,而TEXTAREA为用户提供了输入多行文本的途径。,TEXTAREA元素,TEXTAREA元素有三个属性:NAME、ROWS和COLS。NAME:提交FORM时PHP程序需要的输入信息名称ROWS:输入窗口的行数COLS:输入窗口的列数,TEXTAREA元素示例TEXTAREA元素的用法如果您有什么建议,敬请留言:,TEXTAREA元素,由于客户留言的字数往往难以预料,所以,使用“Method=POST”要稳妥一些。在使用PHP对元素属性参数进行处理时其处理方法与文本类型的元素类似。,TEXTAREA元素,TEXTAREA元素示例,PHP程序调试,由于PHP程序灵活多变,因此在编制过程中很容易出错。通常,对于一个PHP程序来说,很少有一次录入就能完全正确的运行,一般都会出现错误,需要进行修改。,PHP函数,PHP函数库是一种通过CGI接口执行的网络应用指令集 CGI程序实际上与Shell程序类似,而PHP强大的功能很大一部分源于它丰富的函数库在PHP 4.0中,这些函数可以分为100余类,共计一千多个,而且还在不断的扩展之中 用户可以把PHP函数看成动态网页的重要构件,只要使用得当,使用函数进行程序设计可以收到事半功倍的效果,PHP函数,PHP函数,常用PHP函数分类,普通程序设计语言共有的函数数学/数组函数字符串处理函数时间日期函数文件函数数据库专用函数(Informix,MySQL,Oracle 8,PostgreSQL,Unified ODBC)环境函数(PHP Options&Information,Session handling,COM support functions for Windows),常用PHP函数分类,网络协议程序函数(FTP,HTTP,IMAP,POP3,NNTP,Mail)面向专用服务器的函数(Apache-specific Functions,)Shell 指令调用函数(POSIX functions,Program Execution),