PHP数据传输

浏览器如何给服务器传输数据?

<br/>

表单传值

增加一对form标签,将一些需要提交的数据,在form使用表单元素(input,select,textarea)
a)post传值:数据以post形式传输
   <form method=”POST” action=”?”>
   <input type=”text” name=”name” />
    <input type=”text” name=”age”/>
    <input type=”submit” value=”提交”/>
   </form>
b)get传值:将数据绑定到URL(名字=值)

<br/>

服务器接收数据

get接收
$_GET,接收get方式提交的数据(URL传值),将浏览器提交的数据的名字作为一个数组的下标,值作为对应下标的元素值
  $_GET[‘name’] = ‘张三’;
  $_GET[‘age’] = 18;
  
get表单提交
这里写图片描述

URL直接提交
这里写图片描述

<br/>
post接收
$_POST,接收post方式提交的数据(form表单)
   $_POST[‘name’]
   $_POST[‘age’]
  
post表单提交
这里写图片描述

注意:html提交数组必须要有表单名字即name字段
这里写图片描述

<br/>

GET和POST的区别

1.表单对应的提交方式区别:METHOD=“GET/POST”
2.数据提交过程区别:GET将所有的数据拼接到URL(name=值&name2=值2…),POST提交的数据是看不到的
3.GET方式不安全,POST方式相对安全
4.GET方式传输数据,数据量小(2KB),post方式基本无限制(8M)
5.GET提交数据效率比POST要高

如何选择表单提交方式?
1.如果数据安全性要求高:使用post提交
2.如果数据量比较大,使用post提交

<br/>

checkbox提交数据

爱好:篮球,足球,羽毛球,乒乓球,网球,台球…
<form>
<input type=”checkbox” name=”爱好” value=”篮球” />
<input type=”checkbox” name=”爱好” value=”足球” />
<input type=”checkbox” name=”爱好” value=”羽毛球” />
<input type=”checkbox” name=”爱好” value=”乒乓球” />
<input type=”checkbox” name=”爱好” value=”网球” />
<input type=”checkbox” name=”爱好” value=”台球” />
</form>

同名checkbox提交数据
这里写图片描述

以上就出现了一个问题,checkbox的数据不能正确被服务器所接收。
因为PHP会将中括号当做数组的元素来对待,所以只需要在浏览器传递数据的过程中,给name增加一个中括号,让PHP在解析的时候,当做数组处理,从而将多个checkbox的值保存到一个数组中。
这里写图片描述


保存checkbox数据

因为checkbox往往是多选,PHP最终接收的数据会形成一个数组,但是数组不能存储,需要转化成字符串才能存储。所以,将爱好转换成字符串保存到数据库。
implode:将数组元素变成字符串
这里写图片描述


checkbox数据显示

将用户之前提交的,选中的数据,在用户进入之后,能够自动勾选上。

1.如何让checkbox被选中?
checkbox有一个checked属性,一旦某个checkbox拥有该属性,那么就会被勾选上
这里写图片描述

2.如何通过用之前保存的提交的数据来判断出来到底哪个checkbox需要被选中?
a)将用户选中的checkbox变成数组
b)判断当前的checkbox的值,是否在数组中:in_array(),判断当前元素是否在数组中,如果存在返回TRUE,否则返回FALSE
这里写图片描述


数据传输方式

字符数据传输方式
普通的数据传输都是基于此方式。

二进制格式传输
文件的传输:图片,普通文件


文件上传

概念:从一台电脑上,将文件传输到另外一台电脑上。
web:从客户端机器(用户)上传到服务端机器。

get或者post方式不能直接进行二进制文件的传输。get是不能传输二进制文件,post需要搭配一个属性才能进行文件传输。

文件上传分为两个步骤:
1.客户端用户上传
  a)增加文件上传的表单域
  b)用户选择上传文件
  c)点击上传,将文件发送给服务器

这里写图片描述

2.服务端接收
form表单使用post方式提交数据,因此使用post接收数据:接收到的是文件的名字
这里写图片描述

文件上传必须要在服务器端先开启文件上传的功能。
这里写图片描述

修改配置
文件上传的临时路径给更换:d:/server/tmp
这里写图片描述

post默认提交字符流数据,不能提交二进制数据,如果需要提交二进制数据,需要给表单额外增加一个属性:enctype=”multipart/form-data”
这里写图片描述

文件上传到服务器的时候,先存放在临时目录里。PHP会用一组变量来保存临时文件。当脚本执行结束,PHP会释放全部的所占内存,因此文件这部分信息都会被操作系统回收,从而看不到临时文件,最终也没有实现文件的上传。


文件上传原理

这里写图片描述


查看上传文件

$_FILES
这里写图片描述


验证文件合法性

只需要验证文件信息里的error信息,只要为0表示没有任何错误。
文件上传错误
这里写图片描述

验证代码
这里写图片描述


移动临时文件

PHP提供了两个函数来实现文件的移动
move_uploaded_file:将文件直接移动到目标路径,不会保留原文件
copy:将文件复制到目标路径,会保留原文件
这里写图片描述


封装上传文件函数

ini_get:通过配置项,获取php.ini中对应配置项的值

猜你喜欢

转载自blog.csdn.net/lwzhang1101/article/details/80264201