会话控制
会话指的是客户端和服务端之间的交互过程,控制可以理解为客户端在和服务端进行交互的时候进行的控制。
为什么使用会话控制?
http协议是一个超文本无状态协议,没有一种内建机制来维护客户端和服务端间的对话,所以使用会话控制来解决这一问题。
(-)cookie
Cookie的概念:cookie是一种存储在客户端浏览器里用来跟踪和识别用户上 网信息的机制。简单的来说,cookie就是web服务器暂时存储在用户硬盘上的一 个文本文件,并随后被web浏览器读取。当用户再次访问该web网站的时候,网 站通过读取cookie文件记录这位访客的特定信息(如上次访问的位置、花费的时 间、用户名和密码等)从而做出迅速响应。
Cookie 的功能:记录访客的某些信息(例如用户名、三天免登陆),在多页面 之间传递变量,将所有查看的Internet页存储在cookie 的临时文件夹里,可以提高 浏览的速度。
Cookie的使用步骤:
1)设置cookie:setcookie(‘cookie的名字’,’cookie的值’,过期时间,路径)
2)读取cookie:$_COOKIE[‘cookie的名字’]
3)删除cookie:
setcookie(“要删除的cookie的名字”,””,time()-1)
浏览器手动删除
Cookie的分类:分为会话cookie和持久cookie,会话cookie就是没有给cookie设置过期时间,当关闭浏览器或者关闭电脑cookie就会自动消失;持久cookie就是给cookie设置了过期时间,只要过期时间没到,关闭浏览器和关闭电脑cookie都不会消失,只有过期时间到了才会消失
session
Session的定义:session是一种存储服务器端用来跟踪和识别用户信息的会话机制。当启动一个session会话时,会生成一个随机且唯一的session_id,也就是session文件名,此时,session_id存储在本地的cookie里。当关闭页面时此id会自动注销,重新登录此页面,会再次生成一个随机的id。
session的使用
使用步骤:
1)开启session:session_start(); 此函数前面不能有任何输出
2)给session赋值:$_SESSION[‘名’]=值
3)使用session:$变量名=$_SESSION[‘名’]
4)删除session:
删除单个session:unset($_SESSION[‘名’])
删除多个session:$_SESSON=array();
结束当前所有session:session_destroy()
session和cookie的区别
session存储在服务器端,cookie存储在客户端,session相对于安全,cookie不安全,session和cookie都可以设置过期时间,都可以跨页面传值,都可以实现会话功能。Session开启后,有一个sessionid存储在cookie里,如果客户端禁止了cookie,sessionid以url地址栏的方式进行传输。
、cookie数据存放在客户的浏览器上,session数据放在服务器上。 2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。 3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。 4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。 cookie 和session 的联系: session是通过cookie来工作的 session和cookie之间是通过$_COOKIE['PHPSESSID']来联系的,通过$_COOKIE['PHPSESSID']可以知道session的id,从而获取到其他的信息。 在购物网站中通常将用户加入购物车的商品联通session_id记录到数据库中,当用户再次访问是,通过sessionid就可以查找到用户上次加入购物车的商品。因为sessionid是唯一的,记录到数据库中就可以根据这个查找了。
session或cookie实现用户登录的会话控制
Cookie实现登陆控制:setcookie(“名”,”值”,”过期时间”),设置完成后,在每一个登陆后才能访问的页面加入:if(empty($_COOKIE[‘名’])){ die(“未登录,不能操作!”)},如果用户选择了七天免登陆,在登陆界面加入:
if(!empty($_COOKIE[‘名’])){ header(“跳转”)}
Session实现登陆控制:session_set_cookie_params(1*60);session_start(); $_SESSION[‘名’]=值;,设置完成后,在每一个登陆后才能访问的页面加入:if(empty($_SESSION[‘名’])){ die(“未登录,不能操作!”)},如果用户选择了七天免登陆,在登陆界面加入:if(!empty($_SESSION[‘名’])){ header(“跳转”)}