动态服务器

291 阅读4分钟

一.导论

动态服务器与静态服务器的判断依据是什么?

  • 没有请求数据库,就是静态服务器;
  • 请求了数据库,就是动态服务器;

(1)形象理解

按照我的理解,就如打王者一样,人机模式:自己玩(静态服务器),排位模式:上网与别人一起开黑(动态服务器)。

(2)准备工作

新建DB,用JSON 来充当数据库。

1.读取数据库

新建的TEST文件,进行测试

响应结果

可以通过TEST文件得到JSON里的内容

2.数据库写入数据

先读后写,运行几次,就写几次。

在TEST里写入数据

响应
数据库的内容变化

DATABASE NOTE:

在读和写的过程中,读要反序列化(对象化)得到数组;写要序列化(字符串化) 得到字符串。

二.应用(定个小目标)

目标1

(1)实现用户注册功能:

  • 用户提交用户名和密码
  • users.json 里新增一行数据

(2)思路:

  1. 前端写一个form,让用户填写name 和password
  2. 前端监听 submit事件
  3. 前端发送post 请求 ,数据库委于请求体
  4. 后端接收post请求
  5. 后端 获取请求体中password 和name
  6. 后端存储数据

(3) 图示

1. 上传数据

  • 代码截图

  • 创建表单,注册页面

  • 提交 (AJAX请求)上传一个JSON文件

    效果

配置服务器路径

效果

2. 在数据库里增加数据

如何拿到POST请求的数据

做法:

  • 先声明一个数组
  • 把数据放在数组里(数据可能是分段上传)
  • 监听上传事件,每次上传一点,就PUSH一点

读数据库然后给数据库添加数据 每次点击,JSON文件都会增加相应的数据

目标2

(1)实现用户登录功能:

  • 首页home.html ,已经登录用户可以看到自己的用户名
  • 登录页sign_in.html,供提交用户名和密码
  • 输入的用户名和密码如果匹配,自动跳到首页

(2)思路:

  1. 前端写一个form,让用户填写name 和password
  2. 前端监听 submit事件
  3. 前端发送post 请求 ,数据库委于请求体
  4. 后端接收post请求
  5. 后端 获取请求体中password 和name
  6. 后端读取数据,看是否匹配

登录的后端逻辑

(1)登录失败
(2)登录成功

目标3

识别用户是否登录

(1) 所用的知识: Cookie

定义:Cookie 是服务器下发给浏览器的一段字符串,浏览器必须保存这个字符串(除非用户自己删除),然后发起相同的二级域名请求(任何请求)时,浏览器必须附上Cookie

举个生活中的栗子:你和女票去迪士尼,必须得有门票,Cookie就是门票,你没买门票,你和女朋友就没能去玩,然后,你女朋友就和你就分手了。一个Cookie引发的惨案~

(2)但是这个门票什么时候发给你呢?

在登录匹配成功的时候发给你门票。

没有票(不能白嫖)

note :Cookie 不能让前端得到,会被修改的!

加入这个代码即可。

(3) 怎么知道登录的是谁呢?

做法:把logined 改成 user_id

使用无痕浏览,单独访问home.html 会显示用户没有登录

(4)怎么查看登录的有户名? 首先获取用户的ID

然后进行替换

目标4

篡改user_id

(1)解决方案:

  • 思路1 :加密

将user_id 加密发送给前端,后端读取解密 , 有安全漏洞(加密后的内容可以无限期使用 (JWT可以解决))

  • 思路2:把信息隐藏在服务器里

将用户的信息放在服务器里,再给一个随机的id 将随机的id发送给浏览器,后端下次要读取id时,通过X[id]获取用户信息(因为随机,所以id很长,用户无法篡改)这里X是文件(session(会话))

本文所有的代码

源码

总结

本文讲述了什么是动态服务器,以及用户注册、用户登录、Cookie、以及怎么防止他人篡改ID等知识。