Cookie、Session 与 MySQL

2018-10-08  本文已影响0人  金桔柠檬加冰

Cookie、Session 与 MySQL

每日目标

HTTP 会话

在计算机术语中,会话是指一个终端用户与交互系统进行通讯的过程。比如:在浏览器中输入一个网址,单击确认,服务器返回相应的页面,你在页面中执行相应的操作,最后关闭页面 就是一个会话过程

HTTP无状态

“无状态”是指HTTP协议对于事务的处理没有记忆能力。意味着,协议本身不会在处理事务的过程中针对【之前】的信息进行存储,如果在处理当前步骤的时候需要【之前】的信息,则必需重传

HTTP状态保持

Cookie

HTTP 很重要的一个特点就是无状态(每一次见面都是“初次见面”),如果单纯的希望通过我们的服务端程序去记住每一个访问者是不可能的,所以必须借助一些手段或者说技巧让服务端记住客户端, Cookie就可以实现这种操作。

cookie.png

Cookie 就像是在超级市场买东西拿到的小票,由超市(Server)发给消费者(Browser),超市方面不用记住每一个消费者的脸,但是他们认识消费者手里的小票(Cookie),可以通过小票知道消费者之前的一些消费信息(在服务端产生的数据)。

cookie原理分析

语法:

setcookie(name[, value, expire, path, domain]);

cookie常用属性

删除cookie

服务器操作cookie

// 设置cookie
// 
// 设置1小时后过期
setcookie("user", "lisi", time()+3600);
// 获取单个cookie
echo $_COOKIE["user"];
// 查看所有cookie
print_r($_COOKIE);

cookie的缺点:

登录功能实现流程

客户端->服务端: Request GET /login.php
服务端->客户端: Response 空白表单页面
Note left of 客户端: 用户填写表单
客户端->服务端: Request POST /login.php 表单数据
Note right of 服务端: 服务端对提交过来的数据进行校验
服务端->客户端: Response Location: /main.php\n跳转到 main.php
客户端-->服务端: Request GET /main.php
服务端-->客户端: Response Welcome
Note over 客户端,服务端: ..........
客户端->服务端: Request GET /login.php
服务端->客户端: Response 空白表单页面

Session

由于 Cookie 是服务端下发给客户端由客户端本地保存的。换而言之客户端可以在本地对其随意操作,包括删除和修改。如果客户端随意伪造一个 Cookie 的话,对于服务端是无法辨别的,就会造成服务端被蒙蔽,构成安全隐患。

于是乎就有了另外一种基于 Cookie 基础之上的手段:Session

session-structure.png

Session 区别于 Cookie 一个很大的地方就是:Session 数据存在了服务端,而 Cookie 存在了客户端本地,存在服务端最大的优势就是,不是用户想怎么改就怎么改了。

Session 这种机制会更加适合于存放一些属于用户而又不能让用户修改的数据,因为客户端不再保存具体的数据,只是保存一把“钥匙”,伪造一把可以用的钥匙,可能性是极低的,所以不需要在意。

session-flow.png

http://php.net/manual/zh/session.examples.basic.php

session的优点:

session原理分析

session基本操作

session_start();
$_SESSION['user'] = array('username'=>'lisi','age'=>'12');
session_start();
$user = $_SESSION['user'];
session_start();
unset($_SESSION['user']);
session_start();
unset($_SESSION);
$_SESSION = []
session_destroy();

session与cookie的关系

区别 cookie session
存储位置 浏览器 服务器
浏览器携带的数据量 少(只携带session-id)
存储的数据类型 只能是字符串 任意类型
安全性 较低 较高
默认的有效路径 当前路径及其子路径 整站有效
数据的传输量 有限制4K,不能超过20个 无限制

MySQL

准备工作

简介

目标:

  • 搞明白什么是数据库
  • 如何通过工具操作数据库
  • 如何通过代码操作数据库

数据库就是数据的仓库,用来按照特定的结构去组织和管理我们的数据,有了数据库我们就可以更加方便、便捷的操作(C / R / U / D)我们需要保存的数据。

不管是什么数据库,最终都是将数据存到文件(硬盘)中,只是存储的格式不同于文本文件。

一个 Excel 文件就可以看做一个数据库:

![excel-tables.png](https://img.haomeiwen.com/i6343101/7bc321d1bfdf15fa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

一个 Excel 文件中可以包含多个数据表:

基础操作

数据库管理工具

数据库管理工具本质上就是一个使用数据库服务器软件(Server)提供的服务的数据库客户端(Client)。

命令行工具(了解)

一般如果只是简单操作数据库,可以使用 MySQL 内置的命令行工具完成:

进入 MySQL 客户端的 REPL 环境过后,可以通过标准的 SQL 语句操作数据库。

常见的操作指令:

mysql> show databases;  -- 显示全部数据库
mysql> create database <db-name>;  -- 创建一个指定名称的数据库
mysql> use <db-name>;  -- 使用一个数据库,相当于进入指定的数据库
mysql> show tables;  -- 显示当前数据库中有哪些表
mysql> create table <table-name> (id int, name varchar(20), age int);  -- 创建一个指定名称的数据表,并添加 3 个列
mysql> desc <table-name>;  -- 查看指定表结构
mysql> source ./path/to/sql-file.sql  -- 执行本地 SQL 文件中的 SQL 语句
mysql> drop table <table-name>;  -- 删除一个指定名称的数据表
mysql> drop database <db-name>;  -- 删除一个指定名称的数据库
mysql> exit|quit;  -- 退出数据库终端
可视化工具

如果需要复杂的操作,推荐 Navicat Premium

下载地址:http://www.navicat.com.cn/download/navicat-premium

这是一个付费软件,可以免费试用 14 天

基本概念

基本查询语句

查询
-- 查询数据
-- select 字段[, 字段2] from 表名
select id, name, birthday from users;

-- 通配 * 找到表中所有列
select * from users;
增加
-- 新增数据
-- 插入全部字段
insert into users values (null, '王五', 0, '2020-12-12', '12312');
-- 指定字段
insert into users (name, gender, avatar) values ('王五', 0, '12312');
修改
-- 更新数据
update users set name = '麻子', gender = 0
删除
-- 删除
-- 删除语句必须指定条件
delete from users 
筛选条件

子语句

delete from users where id = 6
delete from users where id = 6 and gender = 0
delete from users where id = 6 or gender = 0
delete from users where id > 6
delete from users where id in (4, 5)

常见查询函数

select fn(field1) from table
上一篇下一篇

猜你喜欢

热点阅读