20141226--数据提交+文件上传-01

回顾

系统函数:字符串函数和时间日期函数

数组

数组元素可以是任意数据类型;数组长度没有限制

php凡是碰到变量带中括号的一定会当做数组处理

遍历数组:for循环,foreach循环,each搭配循环,函数(key,current,next,prev,end,reset)

二维数组:php数组元素又是数组

数据结构:栈(FILO)和队列(FIFO)

数组

字符串数组函数

字符串与数组之间的关系(转换)

explode:爆炸,将一个字符串按照某个指定的规则(通常是特殊字符),将数组分成多个段,每一段都当做一个数组的元素,返回一个索引数组

implode:粘合,将一个数组内部的所有元素按照某个指定的规则(特殊字符),将所有的元素拼接成一个字符串

数组运算

数组运算通常指的两种:+运算,合并运算,比较运算

+运算

将两个数组的元素进行数量上的增加,返回一个数组;如果数组元素的键名在第一个数组中存在,那么第二个数组的元素就会被抛弃(键名无论是索引还是关联都是一样的)

合并运算

array_merge:合并,指的是将两个数组中的元素进行累计。如果后面的数组与前面的数组有下标(键名:关联)相同的,那么后面的元素的值会覆盖前面的;如果是索引的相同下标,会自动的修改下标叠加到前面的数组里。

比较运算

比较两个数组元素的个数,然后依次比较数组元素的值

== :值比较

相等条件:数组的元素个数必须相同,数组元素的值必须在顺序上与另外一个数组元素的值相同

=== :类型比较

全等条件:在相等条件上保证元素的类型也相同

验证码

验证码的英文单词叫做captcha

用数组来模拟生成验证码对应的随机字符串。

1. 生成有所有元素的数组

$arr = array(‘a’,’b’,’c’……)

range:按照指定的ASCII码来生成一个序列对应的数组元素(索引数组)

2. 获取随机的多个元素

array_rand:只能随机取出多个数组元素的下标,返回一个索引数组

遍历获取的随机下标:取出对应的值

3. 打乱随机取得的下标

shuffle:将数组元素的顺序打乱,并且重新生成索引。

浏览器提交数据

1. 浏览器为什么要提交数据给服务器?

告诉服务器要做提供什么样的服务

2. 浏览器提交数据的方式?

URL:将数据绑定在url之后

表单:<form>,将所有的要提交的数据放到对应的表单内部

POST:数据采用post方式提交,post提交是将数据打包提交,不会绑定在url后面

GET:数据采用get方式提交,浏览器将form表单中的数据自动的绑定到url后面

3. post和get的区别

a) 提交方式不一样,post提交看不到数据,但是get可以看到(在URL后面)

b) 安全性不一样:post看不见,get看得见

c) 二者传输的数据量不一样:get理论上不超过2KB,post理论上可以达到8M

服务器接收数据

1. php采用什么方式接收数据?

a) $_GET:接收全部get方式提交的数据,形成的是一个数组,表单名字(name属性)作为键名,数据作为键值

b) $_POST:接收全部post方式提交的数据,与$_GET形式一样。

c) $_REQUEST:不管是get方式提交还是post方式提交,都能够接收,而且还能接受其他额外数据。

$_REQUEST接收数据存在安全漏洞,原因是因为$_REQUEST = array_merge($_GET,$_POST);

php.ini中有一个选项控制$_REQUEST的覆盖顺序:request_order

如果是在低版本中可能没有该选项,有一个variables_order,是用来控制$_REQUEST里面的变量顺序

请求处理

get请求

post请求

任何没有name属性的表单,浏览器都不会提交给服务器

数据接收或者判断的前处理

使用isset函数进行数据判断

复选框的使用

checkbox通常情况下不止一个数据

1. 制作表单

2. 接收数据

矛盾:表单中复选框通常一个类复选框名字都是同一个,数据提交之后服务器在接收数据的时候,会将所有的同名的表单进行数据的覆盖,最终只保留一个。

解决方案:

被同名表单元素的name属性增加中括号,浏览器会正常的当做字符串来解析和处理,但是一旦提交到服务器,php看到中括号会当做数组处理(不会覆盖,增加元素)

1. 修改表单:给checkbox的name属性,增加中括号

2. 服务器正常接收数据;

用户信息都需要保存到数据库:数组不能传输给数据库,数组也不能够保存到数据库。

提取checkbox保存的信息,反显到对应的checkbox,显示给用户

1. 从数据库获取:获取到是字符串,需要将字符串反转成数组:explode

2. 如何确定哪些checkbox是被选中的呢?

in_array:判断一个值是否在数组中存在,如果存在返回true,失败返回false

文件传输流

数据在网络间传输的形式分为两种:字符流和二进制流

数据传输一定只能是二进制。

字符流:数据的传输是按照有效字符串进行传输(数据本身是字符串)

二进制流:数据本身是二进制格式

不管是get方式还是post方式所能提交的数据,只能是字符流。浏览器默认的不能提交二进制流数据。(文件,图片都不能提交给服务器)。

时间: 2024-12-16 15:39:43

20141226--数据提交+文件上传-01的相关文章

20141226--数据提交+文件上传-02

文件上传 1. 什么是文件上传? 将浏览器端电脑上所存在的文件,通过浏览器提交给服务器,并保存在服务器端. 文件上传条件 a) 服务器端必须要允许浏览器端上传文件,PHP负责管理 为了方便查看文件上传的临时文件,修改临时文件的存储目录:D:/server/tmp b) 浏览器允许文件上传:浏览器能够根据表单选择对应的要上传的文件,文件上传只能是POST提交 二进制流不可能直接上传,必须告诉浏览器当前文件的流是二进制流:给form增加一个属性:enctype = "multipart/form-d

post提交/文件上传

第一步:修改在php5下POST文件大小的限制 1.编修php.ini 找到:max_execution_time = 30 ,这个是每个脚本运行的最长时间,单位秒,修改为: max_execution_time = 150 找到:max_input_time = 60,这是每个脚本可以消耗的时间,单位也是秒,修改为: max_input_time = 300 找到:memory_limit = 128M,这个是脚本运行最大消耗的内存,根据你的需求更改数值,这里修改为: memory_limit

WebApi发送HTML表单数据:文件上传与多部分MIME

5.3 Sending HTML Form Data5.3 发送HTML表单数据(2) 本文引自:http://www.cnblogs.com/r01cn/archive/2012/12/20/2826230.html By Mike Wasson|June 21, 2012作者:Mike Wasson | 日期:2012-6-21 Part 2: File Upload and Multipart MIME第2部分:文件上传与多部分MIME This tutorial shows how to

(转)WebApi发送HTML表单数据:文件上传与多部分MIME

5.3 Sending HTML Form Data5.3 发送HTML表单数据(2) 本文引自:http://www.cnblogs.com/r01cn/archive/2012/12/20/2826230.html By Mike Wasson|June 21, 2012作者:Mike Wasson | 日期:2012-6-21 Part 2: File Upload and Multipart MIME第2部分:文件上传与多部分MIME This tutorial shows how to

SpringMVC返回JSON数据以及文件上传、过滤静态资源

返回JSON数据 在如今前后端分离的趋势下,后端基本不需要再去关心前端页面的事情,只需要把数据处理好并通过相应的接口返回数据给前端即可.在SpringMVC中,我们可以通过@ResponseBody注解来返回JSON数据或者是XML数据. 这个注解的作用是将控制器方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,也就是HTTP响应的内容体,一般我们都是用来返回JSON数据,因为默认是按JSON格式进行转换的. 需要注意的是,在使用此注解之后不会再走视图解

Django获取多个数据及文件上传

1. 选择性别: 1)更新login.html模板 2)views.py中获取客户端提交的数据 3)当选择性别为"男"后,后台得到了gender=1. 2.选择爱好,可以多选,所以后台会获得多个数据. radio单个数据的获取方法: v1=request.POST.get('gender') checkbox多个数据的获取方法: v2=request.POST.getlist('favor') 1)更新login.html模板 2)views.py中获取客户端提交的数据 3)当选择爱好

vue axios 与 FormData 结合 提交文件 上传文件

---再利用Vue.axios.FormData做上传文件时,遇到一个问题,后台虽然接收到请求,但是将文件类型识别成了字符串,所以,web端一直报500,结果是自己大意了. 1.因为使用了new  FormData来操作表单,并且在测试模拟请求时,从消息头里看到的确实是表单提交[Content-Type: multipart/form-data]. 所以就没有单独在设置. 结果后来加上了这个配置才可以通过了.这里的原理请参照转发大神的原帖. 这个必须设置:Content-Type: multip

java实现多文件上传01

1.html代码 <html> <head> <link rel="stylesheet" type="text/css" href="table.css" /> <link rel="stylesheet" type="text/css" href="frame.css" /> </head> <body> <

Struts2学习总结——文件上传与下载

Struts2文件上传与下载 1.1.1新建一个Maven项目(demo02) 在此添加Web构面以及 struts2 构面 1.2.1配置Maven依赖(pom.xml 文件) <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20