Cookie & Session会话管理与控制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie & Session会话管理与控制相关的知识,希望对你有一定的参考价值。
用现实生活 类比Cookie 和 Session :
两个关于开会的故事:
-
在几十年前人们开会的时候,都需要带上一个参会证。这个参会证上有这个人的职务、姓名、单位、照片等信息。在开会的时候,会议安保人员、组织者只需要检查相关信息就行了。(个人信息,由自己携带)
-
几十年后,越来越先进了。你参会前,会给你发一个卡片或者工牌。这个卡片上有一个唯一的号码。拿到号码,再用摄像头扫一扫即可完成你的个人信息核对。(个人信息,由会议主办方的数据库保存)
在电脑里面也有这两种验证方式:
-
人们在参会证上写着所有的相关信息,这种会话方式我们叫做cookie。这种模式,信息是保存在用户电脑上(客户端)的。
-
人们只需要带一个卡片或者磁卡,通过这个卡片去验证你的照片、姓名等信息的方式,我们叫做session。它只在用户本地存一组小小的值,其他信息全是存在服务器上的。
总结:数据存储在自己身上,这是Cookie; 数据存储在别人那里,我只有一个门卡,这是Session。
什么是会话?
即客户端和服务器之间的对话过程。
HTTP协议是无状态的。何谓无状态?你输入我的网址,我就给你传送数据,我可不管你是谁。
而我们在现实情况中,服务器往往需要知道你是谁?这就需要用到cookie和session会话技术了。
它们都分别存储在哪里?
Cookie是通过将数据保存在客户端来实现与服务端保持连接的,而Session是通过将数据保存在服务器端来实现保持连接的。
Cookie存在哪儿?
Cookie的本质是一小段数据,一小段存储在你电脑硬盘中的数据。
Domain代表的是cookies所属的网站,Name代表的是这个Cookie的名字,Value代表的是Cookie的值,Expires代表的是这个Cookie的有效期。
Session存储在哪里?
在php.ini配置文件中有这么一行 session.save_handler = files, files,说明了php默认的是用文件读写的方式来保存session的。
使用Cookie
1、如何向Cookie中添加数据? 使用 setcookie()函数。
bool setcookie (string $名字[, string $值][, int $过期时间 = 0][, string $路径][, string $域名][, bool $安全 = false][, bool $http只读 = false]);
参数说明:
$名字 必需。规定 cookie 的名称。
$值 可选。规定 cookie 的值。
$有效期 可选。规定 cookie 的有效期。
$路径 可选。规定 cookie 的服务器路径。
$域名 可选。规定 cookie 的域名。
$安全 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。
$http安读 可选。如果true,那么js就无法读取改cookie,增加安全性。
常用三个参数: setcookie(cookie名,cookie值,cookie有效期);
2、如何从Cookie中读取数据?
在服务端,通过$_COOKIE[‘name‘] 来读取cookie中的数据。
特别注意:我们一般是不会把用户名和密码放到cookie中的,因为这并不安全,容易泄露自己的信息。务必注意:重要的信息不要放到cookie中。
使用Session
1、无论向session中添加数据,还是从session中销毁数据,都需要先开启Session:
session_start(); 这个函数无须参数,它用于开启Session。
2、如何向session中添加数据?
$_SESSION[‘userName‘] = ‘wang‘; 这是添加数据的语法。
3、如何从session中读取数据?
$userName = $_SESSION[‘userName‘]; 这是读取数据的语法。
4、如何销毁session中的数据?(有多种方式)
销毁数据之前,也需要先开启Sesson。
方式1) unset($_SESSION[‘XXX‘]);
它用于销毁session中的 XXX 变量。
警告:请不要 unset($_SESSION); 这会导致后续无法使用$_SESSION这个变量了。
方式2) 把空数组赋值给$_SESSION变量 $_SESSION = array();
$_SESSOIN变量是个数组,那么空数组赋值的话也是相当于将当前会话的$_SESSION变量中的值销毁。
方式3) session_destory();
这个函数会销毁当前会话中的全部数据,并结束当前会话。但是不会重置当前会话所关联的全局变量, 也不会重置会话 cookie。
以上是关于Cookie & Session会话管理与控制的主要内容,如果未能解决你的问题,请参考以下文章