9---php文件上传和表单

liang86 贡献于2014-08-07

作者 zzc  创建于2012-12-16 18:34:00   修改者dbc  修改于2013-01-15 05:24:00字数6650

文档摘要:文件上传1、单文件上传为了满足传递文件信息的需要,http协议实现了文件上传机制,从而可以将客户端的文件通过自己的浏览器上传到服务器的指定目录上。上传文件时,需要在客户端选择本地的磁盘文件,而在服务器端需要接受并处理来自客户端上传的文件,所以客户端和web服务器都需要设置。
关键词:

文件上传 1、单文件上传 为了满足传递文件信息的需要,http协议实现了文件上传机制,从而可以将客户端的文件通过自己的浏览器上传到服务器的指定目录上。上传文件时,需要在客户端选择本地的磁盘文件,而在服务器端需要接受并处理来自客户端上传的文件,所以客户端和web服务器都需要设置。 在客户端的设置 文件上传的最基本的方法,是使用html表单选择本地文件进行提交,在form表单中可以通过来标记选择本地文件。如果支持文件上传操作,必须在
标签中将enctype和method两个属性指明响应的值 Enctype="multipart/form-data"用来指定表单的编码数据方式,让服务器知道我们传送一个文件,并带有常规的表单信息。 Method="post"将表单的数据的发送方式设为post 在服务器通过php处理上传 客户端的上传表单只能提供本地的文件选择,以及提供将文件发送给服务器的标准话方式,但并没有提供相关功能来确定文件到大目的之后要干什么?所以上传文件的接收和后续处理就要通过php脚本来处理。要想通过php成功管理文件上传,需要通过以下三个方面信息。 如下所示: 设置php配置文件中的指定,用于精细的调节php的文件上传功能。 file_uploads 确定服务器上的php脚本是否可以接受http文件上传 Memory_limit: 设置脚本可以分配的最大内存量,防止失控的脚本独占服务器内存。 Upload_max_filesize:限制php处理上传文件大小的最大值 Post_max_size:限制通过post方法可以接受信息的最大值。 Upload_tmp_dir:上传文件存放的临时路径 $_FILES多维数组:用于存储各种与文件上传有关信息 $_FILES[myfile][name]:源文件名包括扩展名 $_FILES[myfile][size]:已上传文件的大小 $_FILES[myfile][tmp_name]:上传文件的临时文件名 $_FILES[myfile][type]:上传文件的类型 $_FILES[myfile][error]:伴随文件上传时产生的错误信息 0:没有任何错误 1:上传文件的大小超出了在php配置文件中设置的最大值 2:表示上传文件大小超出了html表单中MAX__FILE__SIZE选项所指定的值 3:表示文件只被部分上传 4表示没有上载任何文件 Php的文件上传处理函数:用于存储各种与上传文件相关信息 Move_uploaded_file(string filename,string destination)将上传文件移动到新的位置 多个文件上传 多个文件上传和单独文件上传的处理思路是一样的,只需要在客户端多提供几个类型为“file”的输入表单,并指定不同的“name”属性的值 表单的基本知识和表单数据验证 1、表单标签 标签用于为用户输入创建 HTML 表单。 表单能够包含 input 元素,比如文本字段、复选框、单选框、提交按钮等等。 表单还可以包含 menus、textarea、fieldset、legend 和 label 元素。 表单用于向服务器传输数据。 2、标签必要属性: Action,规定当表单提交时,向何处发送表单数据。 可选属性: Method,规定如何发送表单数据。 Name,规定表单的名称。 Enctype,规定数据发送到服务器之前如何编码。 文本框,用户的输入 定义: 服务器使用:$_POST[‘wenbenkuang’]; 注意事项:文本框是最常见的表单元素,是一个名对应一个值的形式。 3、密码框, 提供用户输入密码的区域。 定义: 服务器使用:$_POST[‘mimakuang’]; 注意事项:密码框是把文本框中的明文使用密文来表示,增加数据安全性,但不能检查输入是否正确,所以一班会提供两个密码框,来验证用户输入的密码的一致。 4、隐藏域, 提供不可见的表单元素。 定义: 服务器使用:$_POST[‘yincangyu’]; 注意事项:隐藏域是在页面上看不到的表单元素,我们通常使用此种方式传递id类的值。 5、复选框,提供选取多个的操作。 定义: 服务器使用:$_POST[‘fuxuankuang’];值是一个数组。 注意事项:我们通过把name属性设为同一个数组的方式放置一组复选框的。其中的checked属性规定复选框的初始状态是否被选中。 6、单选框,提供在多者选其一的操作。 定义: 服务器使用:$_POST[‘danxuankuang’];值是一个数,不是数组。 注意事项:我们通过把name属性设为相同的方式放置一组单选框的。其中的checked属性规定单选框的初始状态是否被选中。 7、文本域,提供一个大量文字输入区域。 定义: 服务器使用:$_POST[‘wenbenyu”]; 注意事项:文本域是一个双标签,我们可以通过cols和rows属性文本域的可见列和行数。控制他的宽高。当我们需要输入一大段文字的时候需要用到文本域。 8、列表,提供一个有限列表供选择。 定义: 服务器使用:$_POST[“liebiao”];你选中哪个,他的值就为哪个option的value属性的值。 注意事项:select是一个双标签。他的每个选项通过
A、输入为空的验证。 Function form_check(){ //取得文本框的值 Var wenbenkuang_value = document.getElementById(‘wenbenkuang’).value; //对值进行判断如等于空,则返回false,此表单被阻止提交。 If(wenbenkuang_value == ‘’){ Return false; }Else{ Return true; } } 当表单被提交时我们触发form_check()方法,先通过Id取得页面元素的值,之后判断是否为空。为空,则返回false,阻止表单提交。 B、输入长度验证 Function form_check(){ //取得文本框的值 Var wenbenkuang_value = document.getElementById(‘wenbenkuang’).value; //对值进行判断如长度小于6,则返回false,此表单被阻止提交。 If(wenbenkuang_value.length < 6){ Return false; }Else{ Return true; } } 当表单被提交时我们触发form_check()方法,先通过Id取得页面元素的值,之后判断长度的范围。不符合标准则返回false,阻止表单提交。 C、正则验证,输入的值是否包含3个连续的整数,如a123bc。 Function form_check(){ //取得文本框的值 Var wenbenkuang_value = document.getElementById(‘wenbenkuang’).value; Var patt = new RegExp(“[0-9]{3}”); //对值进行判断。通过正则对象的test方法判断, //如果包含此类字符串则test方法返回true,否则test返回false。 //我们通过test的返回值来判断是否符合标准。 //若不符合则返回false,此表单被阻止提交。 If(!patt..test(wenbenkuang_value)) { Return false; }Else{ Return true; } } D、验证密码,必须为字母和数字混合。 //6-18位,并且是字母和数字的组合 var psd1 = document.getElementsByName('psd1')[0].value; var psd2 = document.getElementsByName('psd2')[0].value; var reg1 = /^[0-9]{6,18}$/i; var reg2 = /^[a-z]{6,18}$/i; var reg3 = /^[a-z0-9]{6,18}$/i; if(reg1.test(psd1)){ alert("密码不能全部是数字"); return false; } else if(reg2.test(psd1)){ alert("密码不能全部是字母"); return false; } else { if(!(reg3.test(psd1))){ alert("密码不合法"); return false; } } 本例演示了一个最简单的正则验证,正则的操作大家应该在javascript单元是有了解,此处只是把javascript和html表单一起使用。 通过以上三个小例子,我们可以看到,javascript进行浏览器端验证的基本形式是先取得要判断的值,之后针对这个值进行操作。如果符合我们的要求,则表单被提交,否则的话我们通过给form标签的onsubmit事件一个false的返回值来阻止表单的提交。 不但如此,我们还可以通过不同的动作来触发数据验证方法,比如说onblur,失去焦点时立刻验证。只不过,我们想阻止表单提交,最直接的方式还是返回给onsubmit事件一个false值,而此事件是只有在form标签上可用。 表单的PHP服务器端验证 表单提交到逻辑处理页,该页面根据表单发送信息的方式使用$_GET/$_POST/ $_REQUEST接收。首先接收验证码,如果提交过去的验证码与验证码图片中不符,则提示错误,页面返回来源页。为避免客户端脚本错误,而导致的异常提交。需要在服务器端也做信息验证。判断用户名和密码等各项是否符合要求,如果有一项不符合,则页面返回来源页。 preg_match(string pattern, string subject [, array matches [, int flags]]) 进行正则表达式匹配,在 subject 字符串中搜索与 pattern 给出的正则表达式相匹配的内容 Preg_match_all(string pattern, string subject, array matches [, int flags]) 进行全局正则表达式匹配, Perg_replace( mixed pattern, mixed replacement, mixed subject [, int limit]) 执行正则表达式的搜索和替换,在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档