A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 明知梦已醒 初级黑马   /  2019-6-5 18:08  /  937 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Cookie、Session 与 MySQL
HTTP 会话
在计算机术语中,会话是指一个终端用户与交互系统进行通讯的过程。比如:在浏览器中输入一个网址,单击确认,服务器返回相应的页面,你在页面中执行相应的操作,最后关闭页面 就是一个会话过程
HTTP无状态
“无状态”是指HTTP协议对于事务的处理没有记忆能力。意味着,协议本身不会在处理事务的过程中针对【之前】的信息进行存储,如果在处理当前步骤的时候需要【之前】的信息,则必需重传
HTTP状态保持
Cookie
HTTP 很重要的一个特点就是无状态(每一次见面都是“初次见面”),如果单纯的希望通过我们的服务端程序去记住每一个访问者是不可能的,所以必须借助一些手段或者说技巧让服务端记住客户端, Cookie就可以实现这种操作。


cookie原理分析
一个cookie的设置以及发送过程分为以下四步
客户端发送一个http请求到服务器端
服务器端发送一个http响应到客户端,其中包含Set-Cookie头部
客户端发送一个http请求到服务器端,其中包含Cookie头部
服务器端发送一个http响应到客户端
语法:
setcookie(name[, value, expire, path, domain]);
cookie常用属性
expires 有效期
临时COOKIE(缓存cookie)
setcookie("uName","admin");
硬盘COOKIE
//一小时过期
setcookie("uName","admin",time()+ 3600)
//永久性COOKIE
setcookie("password","123",PHP_INT_MAX);
path有效 路径
默认是指在当前文件所在文件夹下有效。
可以设置为指定的文件夹,如下所示:
//只有在upload文件夹下才能被访问到
setcookie("uName","admin",time()+ 3600,"/upload")
也可以设置为全站有效(那就是设置为站点根目录/,如下所示:
setcookie("uName","admin",time()+ 3600,"/")
domain 域名
域名:
顶级:baidu.com
二级域名
www.baidu.com
music.baidu.com
api.music.baidu.com
image.baidu.com
//只有在a.com以及它下面的子域名中才能被访问
setcookie("uName","admin",time()+ 3600,"/","a.com")
删除cookie
设置有效时间为过去时间
setcookie("uName","admin",time()-1);
将cookie中的值设置为false或者空字符串
setcookie("uName",false);
//或者
setcookie("uName","");
不设置值
setcookie("uName");
在浏览器中清除缓存
服务器操作cookie
// 设置cookie
//
// 设置1小时后过期
setcookie("user", "lisi", time()+3600);
// 获取单个cookie
echo $_COOKIE["user"];
// 查看所有cookie
print_r($_COOKIE);
cookie的缺点:
COOKIE数据不太安全;
COOKIE存储的数据类型,只能是字符串;
COOKIE文件是有容量限制(大约4KB)。4*1024b--> 1个文字大概是2~3b
登录功能实现流程

Session
由于 Cookie 是服务端下发给客户端由客户端本地保存的。换而言之客户端可以在本地对其随意操作,包括删除和修改。如果客户端随意伪造一个 Cookie 的话,对于服务端是无法辨别的,就会造成服务端被蒙蔽,构成安全隐患。
于是乎就有了另外一种基于 Cookie 基础之上的手段:Session:
ession 区别于 Cookie 一个很大的地方就是:Session 数据存在了服务端,而 Cookie 存在了客户端本地,存在服务端最大的优势就是,不是用户想怎么改就怎么改了。
Session 这种机制会更加适合于存放一些属于用户而又不能让用户修改的数据,因为客户端不再保存具体的数据,只是保存一把“钥匙”,伪造一把可以用的钥匙,可能性是极低的,所以不需要在意。

session的优点:
SESSION也是一种会话技术;
SESSION数据存在服务器端,相对于比较安全;
服务器将SESSION数据保存在服务器上,而将SESSION的用户id存储在客户端电脑上。
SESSION存储的数据类型,除了资源外的数据类型都可以;
SESSION文件没有大小限制;
session原理分析
客户端第一次请求服务器时,服务器开启一个session,生成一个唯一标识(sessionid:存储的数据与此sessionid关联),并以响应头的Set-Cookie属性响应到客户端
客户端的后续请求会一直通过请求头的Cookie属性携带sessionid(客户端与服务器通过此id维持状态)
session基本操作
设置session
session_start();
$_SESSION['user'] = array('username'=>'lisi','age'=>'12');
读取session
session_start();
$user = $_SESSION['user'];
删除一个session信息
session_start();
unset($_SESSION['user']);
删除所有session信息
session_start();
unset($_SESSION);
$_SESSION = []
销毁session
session_destroy();
session与cookie的关系
session可以借助cookie实现状态维持,也可以不依赖cookie(URL重写)

MySQL
数据库就是数据的仓库,用来按照特定的结构去组织和管理我们的数据,有了数据库我们就可以更加方便、便捷的操作(C / R / U / D)我们需要保存的数据。
不管是什么数据库,最终都是将数据存到文件(硬盘)中,只是存储的格式不同于文本文件。
可视化工具
基本查询语句
查询
-- 查询数据
-- 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)
常见查询函数
总条数 —— count 分页功能,查询总页数
最大值、最小值 —— max/min
平均值 —— avg
select fn(field1) from table

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马