概念:session 与 cookie 本质上都是文件(session文件和cookie文件),只不过这类文件的读取一般是由系统自动完成的,这种机制称之为session机制和cookie机制,也有人统称为会话机制。
产生原因:创建这种机制是因为http协议是无状态协议,无法知道用户的登录状态,每次刷新或访问都和第一次访问是一样的,这样用户每次都要重新登录,都要重新加购物车等等,用户体验差,也增加服务器负担。所以就将用户登录的信息保存到文件(session,cookie)中,用户访问不同的页面时,通过查看文件信息,来获取用户登录的信息,从而达到能识别用户是否登录是否有其他操作的效果。
什么是会话:从用户角度就是从用户登录网站,到用户退出登录这个过程。从程序员角度就是对
S
E
S
S
I
O
N
数
组
的
创
建
,
写
入
,
读
取
,
修
改
,
删
除
,
销
毁
的
一
个
过
程
。
s
e
s
s
i
o
n
文
件
与
c
o
o
k
i
e
文
件
在
会
话
中
的
作
用
:
s
e
s
s
i
o
n
文
件
是
_SESSION数组的创建,写入,读取,修改,删除,销毁的一个过程。 session文件与cookie文件在会话中的作用:session文件是
SESSION数组的创建,写入,读取,修改,删除,销毁的一个过程。session文件与cookie文件在会话中的作用:session文件是_SESSION数组读取和写入的文件。而cookie文件是帮助服务器找到对应session文件的“钥匙”,实质上cookie文件中起作用的内容就是session_id,它是一串唯一的只有服务器能识别的字符串,通过它能找到服务器中的session文件(该文件就是以session_id为名),还可以知道请求的IP地址,从而正确地响应客户端的请求,不会将内容发到其他的客户端。会话需要session和cookie文件,没有会话这2个文件就不会产生。
会话的过程:cookie文件保存在客户端(浏览器),session文件保存在服务器端(临时文件夹)。
1,开启会话
生成session文件 服务器接收到来自浏览器的请求(浏览器会先搜索本地cookie,如果cookie作用域在访问的域名内,会将这个cookie文件通过请求也发送到服务器),解析请求的文件资源,遇到session_start()函数,开启会话,此时有一定几率触发gc(垃圾回收机制,清理过期的session文件)。 检查情求是否有cookie,有cookie文件,则根据cookie中的session_id找到对应的session文件,并将它载入,以供
S
E
S
S
I
O
N
访
问
。
没
有
c
o
o
k
i
e
或
找
不
到
s
e
s
s
i
o
n
文
件
,
就
根
据
请
求
的
I
P
创
建
一
个
s
e
s
s
i
o
n
文
件
,
文
件
名
为
s
e
s
s
i
o
n
i
d
,
并
将
这
个
s
e
s
s
i
o
n
i
d
发
送
到
客
户
端
保
存
在
c
o
o
k
i
e
中
(
这
个
c
o
o
k
i
e
文
件
名
是
会
话
名
,
由
s
e
s
s
i
o
n
.
n
a
m
e
=
"
会
话
名
"
决
定
)
,
还
要
使
_SESSION访问。没有cookie或找不到session文件,就根据请求的IP创建一个session文件,文件名为session_id,并将这个session_id发送到客户端保存在cookie中(这个cookie文件名是会话名,由session.name="会话名"决定),还要使
SESSION访问。没有cookie或找不到session文件,就根据请求的IP创建一个session文件,文件名为sessionid,并将这个sessionid发送到客户端保存在cookie中(这个cookie文件名是会话名,由session.name="会话名"决定),还要使_SESSION数组能够访问到这个文件。
2,注册会话
创建
S
E
S
S
I
O
N
数
组
,
给
它
赋
值
用
它
来
保
存
用
户
信
息
,
跨
页
面
时
这
个
信
息
能
共
享
。
如
用
户
登
录
时
表
单
提
交
的
用
户
名
,
密
码
等
信
息
保
存
到
_SESSION数组,给它赋值 用它来保存用户信息,跨页面时这个信息能共享。如用户登录时表单提交的用户名,密码等信息保存到
SESSION数组,给它赋值用它来保存用户信息,跨页面时这个信息能共享。如用户登录时表单提交的用户名,密码等信息保存到_SESSION数组中,以便访问其他页面时使用会话,用户不用再输入密码等信息。
3,使用会话
当页面跳转时,上一个页面的
S
E
S
S
I
O
N
数
组
消
失
,
但
服
务
器
将
它
的
内
容
自
动
保
存
到
了
对
应
的
s
e
s
s
i
o
n
文
件
中
,
服
务
器
内
存
中
还
保
存
着
注
册
会
话
时
的
s
e
s
s
i
o
n
i
d
(
也
称
为
会
话
i
d
)
,
根
据
这
个
会
话
i
d
找
到
对
应
的
s
e
s
s
i
o
n
文
件
,
读
取
s
e
s
s
i
o
n
文
件
中
的
值
,
并
保
存
到
这
个
页
面
的
_SESSION数组消失,但服务器将它的内容自动保存到了对应的session文件中,服务器内存中还保存着注册会话时的session_id(也称为会话id),根据这个会话id找到对应的session文件,读取session文件中的值,并保存到这个页面的
SESSION数组消失,但服务器将它的内容自动保存到了对应的session文件中,服务器内存中还保存着注册会话时的sessionid(也称为会话id),根据这个会话id找到对应的session文件,读取session文件中的值,并保存到这个页面的_SESSION数组中,通过
S
E
S
S
I
O
N
中
的
值
就
能
判
断
用
户
的
登
录
状
态
。
4
,
结
束
会
话
实
质
上
是
对
本
次
会
话
过
程
中
s
e
s
s
i
o
n
文
件
的
某
个
,
或
多
个
数
据
的
删
除
(
结
束
单
个
或
多
个
会
话
)
。
但
s
e
s
s
i
o
n
文
件
不
能
直
接
在
脚
本
中
删
除
,
要
通
过
系
统
的
s
e
s
s
i
o
n
机
制
来
实
现
,
即
通
过
修
改
_SESSION中的值就能判断用户的登录状态。 4,结束会话 实质上是对本次会话过程中session文件的某个,或多个数据的删除(结束单个或多个会话)。但session文件不能直接在脚本中删除,要通过系统的session机制来实现,即通过修改
SESSION中的值就能判断用户的登录状态。4,结束会话实质上是对本次会话过程中session文件的某个,或多个数据的删除(结束单个或多个会话)。但session文件不能直接在脚本中删除,要通过系统的session机制来实现,即通过修改_SESSION数组来实现对session文件的修改。
a.删除单个或多个会话:
S
E
S
S
I
O
N
[
′
X
X
′
]
=
′
′
;
_SESSION['XX'] = '';
SESSION[′XX′]=′′;_SESSION = array();(不会删除session文件)
b.直接删除session文件:session_destroy();(不能删除与$_SESSION 关联的变量)。
在脚本结束后系统才会执行对session文件的操作。
完整的结束会话:1,清除session变量 2,清除session_id,session文件。
这样就算COOKIE被劫持也无法登陆,每次登陆后退出时点一下退出能提高上网的安全性。
session 与cookie
最新推荐文章于 2024-11-12 23:14:56 发布