一、GET与POST
1.GET
所有表单输入的数据被加载到请求的URL地址后面;
如:test.php?username=free&password=123&content=dfdsfsfd;
GET方式提交数据只能传递文本,能够提交的数据量大小有限,安全性差;
2.POST
POST提交数据的方式把表单的数据打包放入http请求中;
POST能够提交更多的数据;
二、接收数据
表单提交的数据会自动封装为数组;
用
$_GET
,
$_POST
, 或
$_REQUEST
获得表单提交的数据;
三、处理多值表单控件
多值表单控件(如复选框和多选框),大大提高了基于web的数据收集能力;
因为这些组件是多值的,所以表单处理函数必须能够识别一个表单变量中可能有
多个值;为了让php识别一个表单变量的多个值(即考虑为数组),需要对表单名
(元素的name属性值)增加一对中括号,如:
<input type=
"checkbox"
name=
"love[]"
/>
四、文件上传的相关配置
表单设置
要进行文件的上传,需要对form表单进行特殊设置;
1.设定表单数据的提交方式为POST
2.设定enctype属性值为: multipart/form-data
3.为了避免用户等待许久之后才发现上传文件太大,可以在表单中添加
MAX_FILE_SIZE隐藏域,通过设置其value值可以限制上传文件的大小;
PHP设置
1.file_uploads
是否允许通过HTTP上传文件,默认为ON
2.upload_max_filesize
允许上传文件大小的最大值,默认为2M,此指令必须小于post_max_size;
3.upload_tmp_dir
指定上传文件的临时存放路径,这个目录对于拥有此服务器进程的用户必须是可写的;如果未指定则使用系统默认值;
4.post_max_size
控制POST方式提交数据php所能够接收的最大数据量;
5.memory_limit
指定单个脚本程序可以使用的最大内存容量;
6.max_execution_time
此指令确定php脚本可以执行的最长时间,以秒为单位,默认为30秒;
五、
$_FILES
数组
$_FILES
超级全局变量作用是存储各种与上传文件有关的信息;
$_FILES
是一个二维数组,数组中共有5项:
$_FILES
[
"userfile"
][
"name"
] 上传文件的名称
$_FILES
[
"userfile"
][
"type"
] 上传文件的类型
$_FILES
[
"userfile"
][
"size"
] 上传文件的大小, 以字节为单位
$_FILES
[
"userfile"
][
"tmp_name"
] 文件上传后在服务器端储存的临时文件名
$_FILES
[
"userfile"
][
"error"
] 文件上传相关的错误代码
注:userfile只是一个占位符,代表文件上传表单元素的名字; 因此这个值将根据你所给定的名称有所不同;
六、上传错误信息
$_FILES
[
'userfile'
][
'error'
] 提供了在文件上传过程中出现的错误:
1.UPLOAD_ERR_OK (value = 0)
如果文件上传成功返回0;
2.UPLOAD_ERR_INI_SIZE (value = 1)
如果试图上传的文件大小超出了 upload_max_filesize指令指定的值,则返回1;
3.UPLOAD_ERR_FORM_SIZE (value = 2)
如果试图上传的文件大小超出了MAX_FILE_SIZE指令(可能嵌入在HTML表单中)指定的值,则返回2;
4.UPLOAD_ERR_PARTIAL (value = 3)
如果文件没有完全上传,则返回3; 如网络出现错误,导致上传过程中断;
5.UPLOAD_ERR_NO_FILE (value = 4)
如果用户没有指定上传的文件就提交表单,则返回4
七、文件上传函数
1.
is_uploaded_file
()
bool
is_uploaded_file
( string filename )
is_uploaded_file
()函数确定参数filename指定的文件是否使用HTTP POST上传;
例:
if
(
is_uploaded_file
(
$_FILES
[‘userfile’][‘tmp_name’])){
copy
(
$_FILES
[‘userfile’][‘tmp_name’],
"test.txt"
);
}
else
{
echo
"文件上传失败!"
;
}
2.move_uploaded_file()
bool move_uploaded_file ( string filename, string destination )
move_uploaded_file()作用是将上传文件从临时目录移动到目标目录; 虽然
copy
()也可以实现同样功能,但move_uploaded_file()还提供了一种额外的
功能,它将检查由filename输入参数指定的文件确实是通过http post 上传机制
上传的。如果所指定的文件并非上传文件,则移动失败,返回false;
例:
move_uploaded_file(
$_FILES
[
'userfile'
][
'tmp_name'
],
"1/test.jpg"
);
实操案例 图片上传 缩略图处理
//图片上传
1,通过
$_FILES
接收表单上传的图片元素
2,通过
$_FILES
[
'input_name'
][
'error'
]; 判断文件是否上传到服务器
3,定义新的文件名称
4,通过
is_uploaded_file
函数 判断
$_FILES
[
'input_name'
][
'tmp_name'
] 是否是通过http post方式上传的
5,然后使用move_uploaded_file(
$_FILES
[
'input_name'
][
'tmp_name'
],
'./images/1.jpg'
);函数移动图片到指定目录
到达第5步就说明文件已经上传成功 然后是图片缩略图处理
//缩略图处理 整体步骤分为
1、打开原图
2、新建小图
3、复制大图粘贴到小图,并且调整图片大小
4、保存小图
1,通过
getimagesize
(
$imgsrc
)获取原图的宽度和高度
$imginfo
=
getimagesize
(
$imgsrc
);
$img_w
=
$imginfo
[0];
$img_h
=
$imginfo
[1];
2,判断是什么类型的图片将它打开
switch
(
$imginfo
[2]){
case
1:
$f_img
= imagecreatefromgif(
$imgsrc
);
break
;
case
2:
$f_img
= imagecreatefromjpeg(
$imgsrc
);
break
;
case
3:
$f_img
= imagecreatefrompng(
$imgsrc
);
break
;
}
3,新建一张缩略图
$small_w
= 500;
$small_h
= 500;
$small_img
= imagecreatetruecolor(
$small_w
,
$small_h
);
/4,复制大图粘贴到小图,并且调整图片大小
//imagecopyresized
//参数1:目标(小图)的资源;
//参数2:原图资源 ;
//参数3,4:要放到目标图的X,Y;
//参数5,6:从原图复制的X,Y;
//参数7,8:复制到目标图后的宽度,高度;
//参数9,10:要在原图复制的区域的宽,高度
imagecopyresized (
$small_img
,
$f_img
,0,0,0,0,
$small_w
,
$small_h
,
$img_w
,
$img_h
);
5,新的缩略图名称
//得到文件的后缀名:
$ext
=
pathinfo
(
$imgsrc
,PATHINFO_EXTENSION);
//文件的后缀名
$imgname
=
pathinfo
(
$imgsrc
,PATHINFO_FILENAME);
//文件名
//新的缩略图名为:
$small_name
=
$imgname
.
'_thumb.'
.
$ext
;
6,保存文件路径
7,输出图像
switch
(
$imginfo
[2]) {
case
1:
imagegif(
$small_img
,
$path
.
$small_name
);
break
;
case
2:
imagejpeg(
$small_img
,
$path
.
$small_name
);
break
;
case
3:
imagepng(
$small_img
,
$path
.
$small_name
);
break
;
}
8,释放资源
imagedestroy(
$f_img
);
imagedestroy(
$smail_img
);
9,删除旧文件
is_file
(
$imgsrc
) && unlink(
$imgsrc
);
10 生成缩略图成功
echo
"生成缩略图成功"
.
$path
.
$smail_name
;