PHP基础笔记八

表单传值

表单传值即浏览器通过表单元素将用户的选择或者输入的数据提交给后台

表单传值的方式

GET传值

form表单
<form method = 'GET'>表单元素</from>
a标签
<a href='www.xxx.com/index.php?data=PHP'>
location对象的href属性
<script>location.href='www.xxx.com/index.php?data = PHP'</script>
location对象的assign()方法
<script>location.assign('www.xxx.com/index.php?data = PHP')</script>

POST传值

<form method = 'POST'>表单元素</from>

get传输的数据通常使用来获取数据的,不改变服务器上的资源,只用来获取内容

post传输的数据主要是用来增加数据,改变服务器上的资源

get传输的数据在url中对外可见,post不可见

get传输数据浏览器有限制,post没有

PHP接收数据的方式

不管是$_GET还是$_POST/$_REQUEST,三个都是PHP超全局预定义数组,表单元素的name属性值作为数组的下标,value属性对应的值就是数组的元素值

$_GET:接收GET方式提交的数据

$_POST:接受POST方式提交的数据

$_REQUEST:接受POST和GET提交的数据,将POST和GET合并存储到一个数组,并且当name一样时POST会覆盖GET

PHP处理复选框数据

复选框表单想命名方式

复选框:通常是将一类内容以同样(同名)的形式传递给后台,数据库存储通常是一个字段存储

在浏览器中checkbox的name属性会被毫无保留的提交,在PHP中同名的属性会进行覆盖

解决方案:浏览器不识别[ ](浏览器不认为有特殊性),但PHP认为[ ]该符号是数据的形式,所以PHP就会自动将带有[ ]的元素组合到一起形成一个数组

单选按钮的数据处理 

radio button :可以出现多个选择项,但只能选择其中一个

表单中使用的name属性,使用同名即可,只能选一个

后台接受数据也不需要额外处理,数据库存贮只需要一个字段即可,PHP拿到数据之后组织sql直接存储到数据表即可

多选框的数据处理

表单中的name属性使用数组格式,名字[ ](一类复选框使用一个),后台接收到数据之后是一个数组(数组不能存储到数据库),PHP需要将数组转换成指定形式的字符串,使用分隔符分隔每一个元素并且形成字符串        implode(’分割符‘,数组)         PHP组织sql存储到数据库,如果是反过来操作,那么久取出数据之后使用explode把字符串变成数组         explode('分割符',字符串);

文件上传

文件从用户本地电脑通过传输方式(web表单)保存到服务器所在电脑的指定目录

原理

浏览器请求服务器的html脚本

用户从本地选择一个文件(点击上传按钮)

用户点击上传;文件会通过互联网传输到服务器上

服务区操作系统会将文件保存到临时目录(tmp)

服务器脚本判断文件是否有效

服务器脚本将有效文件移动到指定目录下(完成)

表单写法

method属性:表单提交方式必须为post

enctype属性:form表表单属性,主要是规范表单数据的编码方式

参考手册

$_FILES变量

name:用户在浏览器端,电脑上实际存在的名字

tmp_name:文件在上传到服务器后操作系统所保存的临时路径

type:类型(系统自动执行)

error:文件上传的代号,用来告知php文件上传中有没有出问题

size:文件大小,根据大小确认是否需要保留文件

 移动临时文件到目标位置

文件上传成功后会保存到$_FILES中,那么访问文件信息的形式就是$_FILES[‘表单 name 属性值’][’元素信息‘]

判断文件是否为上传文件:is_uploaded_file();

移动文件:move_uploaded_file();

案列

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form method="post" enctype="multipart/form-data" action="./file.php">        
        <input type="file" name="image"/>
        <input type="submit" name="btn" value="文件上传">
    </form>
</body>
</html>
<?php
    header('Content-type:text/html;charset=utf-8');
    echo '<pre>';
    var_dump($_POST);
    var_dump($_FILES);

    //1.取得元素信息
    $file= $_FILES['image'];

    //2.判断是否为上传文件:临时文件
    if(is_uploaded_file($file['tmp_name'])){
        //如果是上传文件就移动文件
        if(move_uploaded_file($file['tmp_name'],'uploads/'.$file['name'])){
            echo '文件上传成功';
        }

    }else{
        echo '文件上传失败';
    }

多文件上传

同名表单上传

会将表单名字形成一个数据,而且同时将文件对应的五个要素:name,tmp_name,size,type,error都形成对应的数组,每个文件上传对应数组的元素下标都是一样的

 不同名表单上传,每个文件都会形成一个属于自己独立的5个元素的数组

对多文件信息进行遍历读取和处理

1.不同名文件上传处理方式,按照表单名从$_FILES中取出来就可以直接使用(明确直到表单中有多少个文件) ,如果不确定表单中有多少个文件上传,就可以通过遍历$_FILES去把文件取出来

2.同名多文件上传:想办法得到一个文件对应的5个元素数组,从$_FILES中把对应的name/tmp_name/size/error/type挨个取出来,存放到不同的数组中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值