【PHP基础-9】Session机制详解及Session身份认证应用案例

1 Session 机制概述

1.1 什么是Session

除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态。Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力。

Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

1.2 Session作用

当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。

Session与Cookie

  • session依赖于Cookie实现
  • cookie数据保存在客户端(登录后服务器发给客户端一个Cookie,客户端携带cookie访问网页无需登录,注销后本地没有保存cookie。别人如果有截获过之前的cookie则仍能继续使用???)
  • Session数据保存在服务端(当登录时服务器产生Session文件记录用户信息,并向客户端浏览器发送一个名为SESSIONID的Cookie,它的值为该Session的id。访问时浏览器将Session ID发给服务器,验证该Session ID对应的session,匹配则无需再登录;在注销时删除Session文件数据,利用Session ID再次访问页面则匹配失败需要登录。)

1.3 session的运行机制:

(1)当第一次访问网站时,Seesion_start()函数(开启Session,注意该函数前面不能有任何输出)就会创建一个唯一的Session ID,并自动通过HTTP的响应头,将这个Session ID保存到客户端Cookie中(Cookie的名称为PHPSESSID,值为这个Session ID)。同时,也在服务器端创建一个以Session ID命名的文件,用于保存这个用户的会话信息,如下图所示。由于默认生成的这个PHPSESSID cookie的生存期为会话,也就是说关闭浏览器就会过期掉,所以,下次重新浏览时,会重新生成一个session_id。
在这里插入图片描述
在这里插入图片描述

(2)当同一个用户再次访问这个网站时,也会自动通过HTTP的请求头将Cookie中保存的Seesion ID再携带过来,这时Session_start()函数就不会再去分配一个新的Session ID,而是在服务器的硬盘中去寻找和这个Session ID同名的Session文件,将这之前为这个用户保存的会话信息读出,在当前脚本中应用,达到跟踪这个用户的目的。

(3)PHP中使用Session变量,除了要启动之外,还要经过写入的过程。通过预定义超全局数组 $_SESSION完成对Session数据的读写。在$_SESSION关联数组中的键名具有和PHP中普通变量相同的命名规则。注册Session变量的代码如下所示:

<?php
//启动session的初始化
session_start();
//注册session变量,赋值为一个用户的名称
$_SESSION["username"]="skygao";
//注册session变量,赋值为一个用户的ID
$_SESSION["uid"]=1;
?>

(4)执行该脚本后,两个Session变量就会被保存在服务器端的某个文件中,该文件的位置是通过php.ini文件,在session.save_path属性指定的目录下。

2 Session应用案例

2.1 实验要求

(1)编写网站首页。当客户访问首页时,验证请求的Session信息,如果有则显示“欢迎信息”并显示注销按钮(跳转至注销页面),如果没有则要求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值