注册功能
1. 获取前端表单传递数据
2. 获取前端传递图片,并保存在服务器中
3. 将表单的数据和上传图片的地址 保存在数据库中
4. 页面跳转到列表页
向data.txt中保存数据的过程:
1-用一维数组存放 获取的 学生数据
2.从data.txt中取出字符串形式学生数据
3.将字符串数据转成二维数组
4.向二维数组中添加 学生数据
5.把二维数组转成字符串
6.把字符串中的数据 存储到data.txt中
注意:
我们目前没有学习数据库,使用txt记事本来模拟,实现思路:
1. 存储一个人的信息使用一维数组
2. 存储一个班的信息要使用二维数组
3. 数组是一个变量,页面关闭后,数据会销毁,下次打开页面后,数据不存在了
4. 为了数据能永久存储,把数据存储到txt文件中
5. 班级学生信息存放在二维数组中,添加和删除学生信息,就是对二维数组进行追加和删除,对二维数组操作完成后,再把二维数组存储到data.txt
展示功能
1.获取txt记事本中的学生数据字符串,转成二维数组
2.动态遍历渲染在页面中
删除功能
1.获取要删除学生id,
2.从data.txt中取出字符串形式学生数据
3.将字符串数据转成二维数组
4.根据id,从二维数组中删除指定索引的元素
5.把二维数组转成字符串
6.把字符串中的数据 存储到data.txt中
代码:(后台留言或者加小编微信)
协议:
协议,就是事先的一种约定、规则、规范、标准。
常见协议
HTTP协议
HTTP协议即超文本传输协议, 是一个 [浏览器端] 和 [服务器端] 请求和响应的标准
请求行、请求头、请求主体
。状态行、响应头、响应主体
。请求/请求报文
请求由客户端发起,其规范格式为:请求行、请求头、请求主体。
响应/响应报文
响应由服务器发出,其规范格式为:状态行、响应头、响应主体。
get请求的请求报文详解
//--------------------------请求行--------------------------------
// GET 请求方式
// /day02/01.php?username=pp&password=123456 请求路径+参数(注意点)
// HTTP/1.1 HTTP的版本号
GET /day02/01.php?username=pp&password=123456 HTTP/1.1
//--------------------------请求头--------------------------------
// Host:主机地址
Host: www.study.com
// HTTP1.1版本默认开启,建立过连接后,TCP连接不会断开,下次连接可以继续使用(底层,不用管)
Connection: keep-alive
//chrome浏览器自己增加的,不用管
Upgrade-Insecure-Requests: 1
//浏览器的代理字符串(版本信息)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36
//浏览器端可以接受的类型。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,`*/*`;q=0.8
//从哪个页面发出的请求
Referer: http://www.study.com/day02/01-login.html
//检查浏览器支持的压缩方式
Accept-Encoding: gzip, deflate, sdch
//浏览器支持的语言,优先中文。
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
//----------------------------请求主体-------------------------------------
//get请求没有请求体,因为要传递的数据已经拼接到了请求主头中
POST请求的请求报文
//-----------------------请求行---------------------------------------------
POST /day02/01.php HTTP/1.1
//-----------------------请求头--------------------------------------------
Host: www.study.com
Connection: keep-alive
//传递的参数的长度。
Content-Length: 29
Cache-Control: max-age=0
Origin: http://www.study.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36
//内容类型:表单数据,如果是post请求,必须指定这个属性。
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,`*/*`;q=0.8
Referer: http://www.study.com/day02/01-login.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
//------------------------请求体------------------------------------------
username=pp&password=123456
GET请求与POST请求的对比
//---------------------状态行(响应行)-------------------------------
//HTTP/1.1 HTTP版本
//200 响应的状态
//200表示成功
//302页面重定向
//304表示文档未修改
//404表示找不到资源
//500表示服务端错误
HTTP/1.1 200 OK
//----------------------响应头-----------------------------------------------
Date: Thu, 22 Jun 2017 16:51:22 GMT //服务器的时间
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45 //服务器的版本信息
X-Powered-By: PHP/5.4.45 //后台编程语言信息
Content-Length: 18 //服务器的响应主体长度
//内容类型,告诉浏览器该如何解析响应结果
Content-Type: text/html;charset=utf-8
//-----------------------响应主体------------------------------------------------
用户登录成功
通常来说,我们不会用抓包工具来查看请求和响应,太麻烦了,可以直接使用谷歌浏览器来查看请求报文和响应报文。
谷歌浏览器会对报文进行一定的格式化,看起来虽然不是原生的报文,但是使用起来更加的方便简洁。
数据库基本概念
专门用来存储、管理数据的仓库(空间),按照数据结构来组织、存储和管理,可以实现高效存取数据。英文:Database, DB。
关系型数据库
当前使用范围最广的数据库。基于表, 按照关系模型(数据之间表与表存在联系)组织的数据库。
订单:订单编号,商品名称,价格,数量,配送地址
订单编号 | 商品名称 | 价格 | 数量 | 配送地址 |
---|---|---|---|---|
100123 | 华为mate10 | 4999 | 2 | 北京市京顺路99号 |
100124 | 花裙子 | 499 | 1 | 北京市清华大学1号楼 |
数据库官网地址:https://dev.mysql.com
英文手册地址:https://dev.mysql.com/doc/refman/5.5/en/
中文参考论坛:http://www.mysqlpub.com/
SQL:structured Query Language 结构化查询语言。SQL语句,相当于客户端发送的命令(与数据库服务器进行交互), 我们后面就是要学习 SQL 语句操作数据库
字段类型初步介绍
字段约束
字段约束: 字段数据的属性规则(特征)
设置字段为主键,主键字段的值不能重复,不能为空。而且一个数据表中只能设置一个字段为主键,作为每行记录的唯一身份信息(索引)。stu_id int primary key
设置字段为自动增长,默认从1开始自动分配编号。自增长字段必须为一个key(索引,数据结构,便于快速查找数据,相当于书的目录),一般与primary key结合使用。
类型必须为整型。
注意 创建表时,每个表必须有一个主键
保存表结构:
向新建的表中添加数据:
SQL编写注意点: 注释用 -- , 语句结束加分号(;)
增删改查
-- insert into 表名 (字段列表) values (值列表)
insert into book (name,author,category,price) values ('天龙八部','金庸','文学',20)
-- update 表名 set 字段名称1=值1,字段名称2=值2,... where 条件
update book set name='笑傲江湖',price='30' where id=10
-- delete from 表名 where 条件
delete from book where id=10
-- select * from 表名 where 条件
select * from book where author='金庸' and price>20
-- 查找姓张的人
select * from table where name like '张%';
select 字段列表 from tb where 字段 in (value1,value2,value3);
-- 查询满足条件数据的总条数
select count(*) from table where 条件
select 字段列表 from table limit 截取的起始索引,截取的长度
select 字段列表 from A join B on A.字段=B.字段 [where子句];
创建学生表 :姓名、年龄、性别
INSERT INTO `stu` (name, age, sex) VALUES ('张三', '18', '男');
INSERT INTO `stu` (name, age, sex) VALUES ('李四', '19', '女');
INSERT INTO `stu` (name, age, sex) VALUES ('王五', '22', '男');
INSERT INTO `stu` (name, age, sex) VALUES ('赵六', '18', '女');
INSERT INTO `stu` (name, age, sex) VALUES ('田七', '15', '男');
INSERT INTO `stu` (name, age, sex) VALUES ('王八', '16', '女');
INSERT INTO `stu` (name, age, sex) VALUES ('李狗蛋', '18', '男');
INSERT INTO `stu` (name, age, sex) VALUES ('李元芳', '20', '男');
INSERT INTO `stu` (name, age, sex) VALUES ('张飞', '16', '男');