1、企 业 网 站 开 发PHP版,讲师:王靖,课 程 目 标,第5章 数组操作,5,第6章 错误、异常处理与调试,6,第7章 文件系统与操作,7,第8章 PHP交互,8,课程内容安排,表单制作 输入标记 提交表单信息 PHP处理表单表单验证 综合练习,表单制作,表单是网页上的一个特定区域,这个区域是由一对标记定义的。如图所示即是用户的HTML表单界面,其程序结构通过查看源文件如图9-2所示,其是以标记的表单代码。,表单的基本结构形式为:,表单的基本结构形式为: 属性name为表单名称,method为表单数据的传送方式,一般有get、post两种,action为数据处理的网页程序文件名。,表单以标
2、记开始,以标记结束,在这一对标记之间放入的是表单的对象。单击提交按钮,提交的范围就在这对标记之间的部分,其中包含处理表单的脚本程序位置、提交表单的方法等信息。其就像试卷上标明做完后交到什么地方,怎么去交等信息。在标记中,可以包含如表所示的4个标记。,输入标记,文本域text密码域password 文件域file 提交与重置按钮 复选框 单选按钮 下拉列表标记,文本域text,文本域text,其基本结构形式为:type的属性值text设定为表单的文本域,可输入任何类型的文本、数字和字母,输入的内容单行显示。name是文本域的名称,maxlengh是文本域的最大输入字符数,size是文本域的宽度,
3、value是文本域的默认值。,【范例】编写个人简历表单,要求填写“姓名,学历,毕业院校,专业特长,个人爱好和求职意向”等内容。,密码域password,在表单中,常见到输入到文本域中的文字均以“*”符号显示,这种形式的文本域称为密码域,其基本结构为:name为密码域的名字,这些属性的含义同文本域相同,只是在输入显示形式上有所不同,一般是为了不易被外界发现,为保密而使用。,【范例】以身份验证为例,填写“姓名,学号,邮箱”等内容,并设置密码。,文件域file,文件域可以用来浏览查找本地文件路径,其基本结构为文本域的外观是一个文本框加一个浏览按钮,用户可以直接将上传文件路径填写在文本框中,也可以单击
4、浏览按钮,找到需要上传的文件。,【范例】建立一个用户调查表,输入“姓名,网站,密码”,并上传个人照片。,提交与重置按钮,表单一般通过提交来处理信息,要提交信息,就要有提交按钮,HTML提供提交和重置按钮来实现信息的提交和重置,其基本结构如下:submit是提交按钮,将信息送到指定地点。reset是重置按钮,重新填写表单信息。value是显示在按钮上的文字。,【范例】建立身份验证表单,填写“昵称,年龄,邮箱,密码”等信息,设置“提交”和“重置”按钮以处理信息。,复选框,兴趣爱好往往不止一种,如果要对用户的爱好进行调查,需要用户有多个选择,这种情况称为复选。而复选框checkbox可以同时选中多个
5、选项,其结构形式如下。checkbox为复选框,当属性设为checkbox时,可以同时选择多个项目。,【范例】对用户的爱好进行调查,并提交信息。调查内容包括“时尚,旅游,电影,音乐,体育,艺术,文学,上网”等。,单选按钮,如果在许多选项中只允许选择一个项目,此种情况称为单选。单选按钮radio只允许用户有一个选择,其基本结构形式为:radio为单选按钮的属性值,当属性值设为radio时,一次只能选择一个项目。,【范例】建立用户调查表单,对用户喜欢电影的类型做调查,并提交信息。每人只能有一个选择,所要选择的内容为“情感片,历史剧,科幻片,动画片,喜剧片,恐怖片,灾难片,动作片,记录片”等。,下拉
6、列表标记,如果可供选择的项目过多时,会在浏览器页面上占很大的空间,这样看起来会很不美观。HTML还提供了另一种选择菜单下拉列表,可以节省空间,正常状态下只能看到一个选项,单击下三角按钮打开列表就能看到全部选项。列表可以显示一定数量的选项,如果超出了这个数量,会自动出现滚动条,浏览者可以通过拖动滚动条来查看各选项,其基本语法结构为 选项 选项 name为下拉列表的名字,size设置下拉列表的高度、一次显示的个数,默认为1。selected表示当前被默认选中的项,value表示该项对应的值,该项被选中后,其值将被发送到服务器上。,【范例】建立下拉列表,选择喜欢居住的城市做调查,可以选择的城市有“北
7、京,上海,天津,重庆,西安,成都,南宁,郑州,武汉,长沙,广州,深圳,大连,青岛或其他城市”,,提交表单信息,get方法提交 post方法提交,get方法提交,get提交方法的本质上是将数据通过连接地址的形式传递到下一个页面,此方法提交表单,表单不会明显地改变页面状态。get方法是最简单的提交方法,主要用于静态HTML文档、图像或数据库查询结果的简单检索。,【范例】创建用户登录表单,输入用户名和密码,使用get方式提交表单。提交后显示“通过GET方法提交的信息!”,用户名和密码都为“php”,,post方法提交,post方法比get方法有很多优势,例如,如果数据很多,用get提交会丢失很多数据
8、;如果用post提交,可以尽可能多地传递数据。而且post也有更高的安全性,不会像get那样把传送的数据暴露在浏览器的地址栏中。,表单数据的接收,接收表单提交方式是POST的数据$变量=$_POST表单项名称;接收表单提交方式是GET的数据接收表地址传值的数据$变量=$_GET表单项名称;地址传值语法:文件名.后缀名?变量名1=值1&变量名2=值2,表单数据的接收,$_FILES数组内容如下:$_FILESmyFilename 客户端文件的原名称。$_FILESmyFiletype 文件的 MIME 类型,需要浏览器提供该信息的支持,例如image/gif。$_FILESmyFilesize
9、已上传文件的大小,单位为字节。$_FILESmyFiletmp_name 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的$_FILESmyFileerror 和该文件上传相关的错误代码。error 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量),PHP处理表单,PHP最有用的特性之一是其能够自动将表单中的变量赋予PHP变量,这使得表单的处理变得非常快捷。下面通过实例来讲解PHP处理表单,获取列表单提交的数据的方式。,【范例】使用PHP处理一
10、周内的活动安排,其活动内容为:“星期一:看比赛,星期二:去上班,星期三:旅游,星期四:运动,星期五:读书,星期六:交友,星期日:看电影”。,表单验证,用户名验证 邮件地址验证 密码验证,用户名验证,用户名几乎是每个表单所必填的,而且用户名常常有一些特殊的限制,如长度、特殊符号等限制。因此对用户的验证显得非常必要,下面通过实例进行简单的用户的验证。,【范例】给变量$name赋予php,判断其用户名是否为空,其长度是否在310之间。如果为空,则输出“姓名不能为空”。如果长度不合法,输出“姓名长度必须在3和10之间”,姓名必须是字母或数字的组合。如果合法,输出用户名。,邮件地址验证,相比上面的姓名验
11、证,电子邮件验证稍微复杂一些,电子邮件最主要的特征是其中必须包含“”符号。一般来说,“”符号后面是一个邮件服务器地址,如,其后面有含有符号“.”,不过其判断方式与“”相同。,【范例】判断电子邮件地址“”是否合法,判断是否已经填写,是否含有符号“”,如果正确,则输出邮件地址。,密码验证,密码验证的特点就是要限制密码的长度,然后需要确认两次输入的密码是否一致。为了保证两次密码完全相同,需要验证两次密码的值是否相等。例如要判断密码长度是否在620之间和两次输入的密码是否一致,可通过下面的程序判断。,表单项扩展,判断用户名和密码是否是123,如果是登陆成功,否则失败输入一个图片地址,提交后显示图片在表
12、单项里输入换行的时候或者空格, 在接受的时候让它自动换行或者有空格动态网页生成静态网页1,输入一个表格2,输入一个时间,魔术引号,当magic_quotes_gpc = On时,接收后的数据自动给引号加上斜杠,比如把 改为 我们把magic_quotes_gpc = On改为magic_quotes_gpc = Off,防止外部提交数据,一、ASP防止外部提交数据的方法server_v2 then Response.write 警告!你正在从外部提交数据!请立即终止! Response.EndEnd if%,防止外部提交数据,二、PHP防止站外提交数据的方法,文件上传,在IIS属性中选中“允许
13、直接编辑配置数据库”,然后。在服务里关闭iis admin service服务找到windowssystem32inesrv下的metabase.xml编辑其中的ASPMaxRequestEntityAllowed 把他修改为需要的值,默认为204800,即200K,把它修改为2048000(2M)或者更大。然后重启iis admin service服务,文件上传,在PHP.ini中设置允许文件上传设置file_uploads = Off 为 file_uploads = Onupload_tmp_dir是把临时文件上传到系统临时目录,也可以指定位置upload_max_filesize =
14、2M 允许最大上传大小max_execution_time post_max_size = 2M,文件上传,pathinfo() 函数以数组的形式返回文件路径的信息。pathinfo(path,options)path 必需。规定要检查的路径。 process_sections 可选。规定要返回的数组元素。默认是 all。可能的值:PATHINFO_DIRNAME - 只返回 dirname PATHINFO_BASENAME - 只返回 basename PATHINFO_EXTENSION - 只返回 extension,文件上传, 输出:Array(dirname = /testwebb
15、asename = test.txtextension = txt),文件上传,输出:test.txt,文件上传,is_uploaded_file() 函数判断指定的文件是否是通过 HTTP POST 上传的。is_uploaded_file(要检查的临时文件) ,文件上传,move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。move_uploaded_file(要移动的文件,文件的新位置)注意:如果目标文件已经存在,将会被覆盖。,文件上传,文件上传, ,脚本超时,set_time_limit(0);0表示不限制时间,时间单位是秒,表单项的样式,设置按钮为图片设置文本域背景图片设置文本域的颜色设置jQuery 的确认提示框设置WEB编辑器,综合练习,创建个人信息表单,选择所在的学校,填写学生个人信息。填写姓名、学号等,学号必须为数字,并处理所提交的信息。三者不能为空,学号必须为数字。学生信息为:北京师大 张三 200801。所选的学校有:北京大学,清华大学,北京师大,中国人大,北京理工等。,2利用下拉列表选择出生年月(20002008年),选择日期2008年8月8号,并处理提交的信息,显示生日。,