php知识点2-form

来源:互联网 发布:淘宝店铺宝贝优化 编辑:程序博客网 时间:2024/05/10 05:44
1.概述
form就是表单,其可以上传文件。


在通过POST方式向服务器发送AJAX请求时,最好要通过设置请求头来指定为application/x-www-form-urlencoded编码类型。
而通过表单上传文件时必须指定编码类型为"multipart/form-data"。那么为什么要这么设置呢?


application/x-www-form-urlencoded : 窗体数据被编码为名称/值对。这是标准的编码格式。
multipart/form-data : 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
text/plain : 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。


在form元素的语法中,EncType表明提交数据的格式,其指定将数据回发到服务器时浏览器使用的编码类型。
form的enctype属性为编码方式,常用有两种: 
application/x-www-form-urlencoded 和 multipart/form-data , 
默认为application/x-www-form-urlencoded 。


当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串
(name1=value1&name2=value2...),然后把这个字串append到url后面,用?分割,加载这个新的url。


当action为post时候,浏览器把form数据封装到http body中,然后发送到server。


如果没有 type=file 的控件,用默认的 application/x-www-form-urlencoded 就可以了。


但是如果有 type=file 的话,就要用到 multipart/form-data 了。浏览器会把整个表单以控件为
单位分割,并为每个部分加上Content-Disposition(form-data或者file)、
Content-Type(默认为text/plain)、name(控件name)等信息,并加上分割符(boundary)。


2.实例
2.1.简单的验证
<form action="welcome.php" method="post">
名字: <input type="text" name="fname">
年龄: <input type="text" name="age">
<input type="submit" value="提交">
</form>


由上可知,表单中有2个变量:fname、age
当用户输入这2个变量,并点击提交按钮后,就会向web服务器发起post请求。


2.2.上传文件
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>


点击Submit按钮后调用的上传文件的代码:
<?php
if ($_FILES["file"]["error"] > 0){
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
}else{
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>


第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:
$_FILES["file"]["name"] - 被上传文件的名称
$_FILES["file"]["type"] - 被上传文件的类型
$_FILES["file"]["size"] - 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码

0 0
原创粉丝点击