会话控制:session与cookie

时间:2022-11-21 04:42:16

我们在浏览网站时,访问的每一个web页面都需要使用“http协议”实现。而HTTP协议是无状态协议,就是说HTTP协议没有一个内建机制来维护两个事务之间的状态。当一个用户请求一个页面以后,再请求同一个网站上的另外页面时,HTTP协议不能告诉我们这两个请求时来自同一个用户,会被当做独立的请求,而并不会将这两次访问联系再一起。

会话控制的思想就是允许服务器跟踪同一个客户端做出的连续请求。亦可通过会话控制在多个页面之间共享数据。

cookie是一种由服务器发送到客户端的片段信息,存储在客户端浏览器的内存或者硬盘上,在客户对该服务的请求中发回它。PHP透明地支持HTTPCookie。

session(中文名“会话”)技术与cookie相似,都是用来存储使用者地相关资料。但最大不同之处在于Cookie是将数据存放于客户端计算机之中,而session则是将数据存放于服务器系统之下。

1.session
(1)session存储在服务器的
(2)session每个人存一份
(3)session有默认的过期时间
(4)session里面可以存储任意类型的数据,包括数组
安全,对服务造成压力
用法:
1.当一个页面需要使用session的时候,需要在页面顶部加session_start();
2.操作session
 赋值  $_SEESION["uid"] = "";
 取值  $_SESSINO["uid"]

注销变量与销毁session

bool session_destroy(void)           //销毁和当前session有关的所有资料

相对于session_start()函数(创建session文件),该函数用来关闭session的运作(删除session文件),如果成功则传回TRUE,销毁session资料失败则返回false。但该函数并不会释放和当前session相关的变量,也不会删除保存在客户端cookie中的session ID。可以实用unset()函数来释放在session中注册的单个变量:

unset($SESSION["username"]);

unset($SESSION["password"]);

不要使用unset($_SESSION)删除整个$_SESSION数组,这样将不能再通过$_SESSION超全局数组注册变量了。但如果想把某个用户再Session中注册的所有变量都删除,可以直接将数组变量$_session赋上一个空数组:

$_SESSION=array();                //将某个用户在Session中注册的变量全部清除

注意:使用"$_SESSION=array()" 清空$_SESSION数组的同时,也将这个用户在服务器端对应的Session文件内容清空。而使用session_destroy()时,则是将这个用户在服务器端对应的Session文件删除。

2.cookie
(1)cookie存储在客户端的
(2)cookie每人存一份
(3)cookie没有默认过期时间
(4)cookie只能存储字符串
不安全,不会对服务器造成压力
用法:
1.操作cookie
 赋值:setcookie(key,value)
    取值:$_COOKIE["uid"]