表单传值
POST方式和GET方式的区别
- GET方式会将传递的数据以明文方式显示在地址栏中,具有可见性,POST方式没有可见性。
- 基于第一点,GET方式的安全性比POST方式稍微低一些。
- 传输的数据量大小上,GET方式可能存在限制,POST方式不存在。(http协议本身并没有限制GET方式传输数据的数据量大小,之所以存在限制,是因为有可能被浏览器或服务器的配置所限制)(如果传输的数据量比较大,采用POST方式比较稳妥,这个是推荐的方式)
- 在支持的数据类型,GET方式只支持ASICC码字符类型,POST方式无限制。
PHP接收数据的方式
$_POST
$_GET
$_REQUEST
$_REQUEST的概念:包含$_GET、$_POST和$_COOKIE的数据
提问:当$_POST和$_GET存在同名元素时,$_REQUEST将会选择使用哪个呢?
答案:$_REQUEST选择使用哪个的值,取决于php.ini中一个名为request_order的配置项的配置!那个值在最右边代表使用哪种方式,默认是使用post
文件上传
实现思路:构建文件上传界面 -> 服务器接收(储存到系统临时目录中) -> 将文件从系统临时目录中转移到指定的目录
<form action="index.html" method="post" enctype="multipart/form-data">
<!-- 单图片上传 -->
<input type="file" name="img" >
<!-- 多图片上传 -->
<input type="file" multiple="true" name="img[]" >
</form>
<?php
move_uploaded_file($_FILES['img']['tmp_name'],'迁移目标的全路径')
$file参数详解
-
name
原文件名 -
type
文件的格式类型 -
tmp_name
文件上传到服务器存储的临时文件的全路径 -
error
错误信息值 -
size
原文件的大小
错误码值 | 说明 |
---|---|
0 | 没有错误发生,文件上传成功 |
1 | 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值 |
2 | 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值 |
3 | 文件只有部分被上传 |
4 | 没有文件被上传 |
6 | 找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进 |
7 | 文件写入失败。PHP 5.1.0 引进 |
封装文件上传
<?php
function upFile($file){
#处理系统级别的错误
switch ( $file['error'] ):
case 1:
echo '文件大小超出了系统的限制!请重新上传';
return false;
case 2:
echo '文件大小超出了浏览器的限制!请重新上传';
return false;
case 3:
echo '文件没有上传完毕!请重新上传';
return false;
case 4:
echo '您还没有选择上传的文件!';
return false;
case 6:
case 7:
echo '系统繁忙,请稍候再试!';
return false;
endswitch;
#处理逻辑错误
//检查文件的格式类型是否符合要求
$limitType = array('image/png', 'image/jpeg', 'image/gif');
if( !in_array($file['type'], $limitType) ){//如果不符合要求,则给出提示,中止继续执行
echo '您上传的文件格式类型不符合要求,限制的文件格式为:'.implode(';', $limitType);
return false;
}
//检查文件的大小是否符合要求
$maxSize = 200 * 1024;//限制文件的最大值为200K
if( $file['size']>$maxSize ){//如果上传文件的大小超过了限制的大小,则给出提示,中止继续执行
echo '您上传的文件过大,请重新上传!';
return false;
}
#构建绝对不重复的文件名
$path = 'F:/home/class/day12/code/upload/';//文件的路径
$name = uniqid('img_') . date('YmdHis') . mt_rand(0, 1000) . mt_rand(0, 1000) . strchr($file['name'], '.');//文件的新名字
$wholeFileName = $path . $name;//新文件的全路径
#转移临时文件
if( move_uploaded_file($file['tmp_name'], $wholeFileName) ){//如果转移成功
echo '恭喜你文件上传成功!';
return true;
}else{//否则转移失败
echo '文件上传失败,请联系管理员!';
return false;
}
}
网友评论