前后台数据的传递
1.前台数据的提交
(1). get
get方式是将表单元素的name属性值与用户输入的数据,组织成对形式,放在URL传递到所请求的文件
(2). post
post方式是将用户输入的数据,与表单元素的name属性值,组织成对的形式,放在http协议内部传递到后台
(3). 模拟get方式提交数据
主要应用在没有表单的情况下,向后台提交数据
如何模拟:只要是HTML文档中能够输入URL的地方,在所请求的文件名后加如:? 名=值&名=值方式,在没有表单的情况下向后台传递数
(4). get vs post
get | post |
---|---|
数据不安全 | 相对安全 |
提交的数据量小 | 提交的数据量大 |
数据类型单一,只能传递文本数据 | 数据类型多样 |
一般用于从服务器端获取数据 | 向服务器端传递数据 |
2.后台数据的接收
(1). $_GET
用于接收前台使用get方式提交的数据
将前台传递过来的各个名值对应的名作为关键数组的键名,名值对应的值,作为关键数组元素的键值。
(2). $_POST
用于接收前台使用post方式提交的数据
将前台传递过来的各个值对中的名作为关联数组的键值,名值对中的值,作为关联数组元素的键值
(3). $_REQUEST
同时能接收前台使用get或post方式提交的数据
3.特殊表单的接收
对于复选框,在设置HTML时,需要再name属性值后加‘[]’符号,这个符号一旦被PHP接收后,会自动转换为数组
文件上传
1.前台部分
form表单:
action属性应该指向一个PHP文件
method属性应该设置为post
enctype属性:
取值:
application/x-www-url-encode (默认)只能上文本数据
multiple/form-data 可以上传多种类型数据(上传文件)
示例:
2.后台处理
上传的文件的相关信息,被保存在PHP中$_FILES这个预定义变量中
- | 说明 |
---|---|
myfile | 键名是表单上传域的name属性值,对应一个数组 |
name | 所上传的文件的原文件名 |
type | 文件的mime(文件类型) |
size | 文件大小(单位字节) |
tmp_name | 文件上传到服务器后的临时文件名 |
error | 文件上传过程中的错误信息 |
error常见错误代码:
3.文件上传的原理
更改临时文件夹
重新启动Apache
临时文件夹中的文件,在php脚本执行结束后会被自动删除。所以文件上传的原理就是将位于临时文件夹中的临时文件,移动到其他位置。
语法:
move_uploaded_file(tmp,dest);
- | 说明 |
---|---|
tmp | 用户上传的临时文件 |
dest | 目标文件 |
4.完善文件上传
控制文件的保存的文件名
控制文件的大小
控制文件的格式
(1).生成随机文件名
- | 说明 |
---|---|
mt_rand(m,n) | 生成m与n之间的随机整数 |
chr(code) | 所表示的整数转换为相应的字符 |
常用ASCII码
//随机文件名的格式
function getRandomName(){
$string='';
for($i=0;$i<10;$i++){
//$code=mt_rand(97,122);
switch (mt_rand(0,2)) {
case 0:
$string.=chr(mt_rand(97,122));
break;
case 1:
$string .=chr(mt_rand(