COOKIE 原理:
首先是客户端(浏览器)请求某个页面,如login.php 服务执行了该php脚本,并给浏览器响应一个COOKIE变量(也就在在HTTP的响应头中有一条Set-Cookie:user=yqc)
然后客户端将COOKIE保存,以后的每次访问都会在HTTP请求头中添加一条Cookie:user=yqc,这样每次都会发送cookie给服务器
COOKIE的生命周期是如果设置了生命周期,不管是否关闭浏览器,COOKIE都一定在生命周期结束后才失效(删除了浏览器的COOKIE文件也会是COOKIE失效)
如果不设置COOKIE的生命周期,COOKIE会一直存在,只到关闭浏览器,或者是删除浏览器COOKIE文件
COOKIE的生效范围(注意:路径定义是以根目录(WWW目录)为路径基础的)setcookie(‘username’,’yqc’,time()+3600,’/’);
PHP中的COOKIE数组,是根据浏览器的HTTP请求头信息中的Cookie:user=yqc 来创建COOKIE数组, 所有COOKIE是保存在客户端(浏览器)中,而不是存在服务器
COOKIE 失效:cookie的生命周期设置为过去的时间:如time()-1;
COOKIE 用途:比如可以用来记住用户名,浏览历史,等安全性要求不高的地方
SESSION的原理:
依然和上面的一样,浏览器先是请求服务器某个脚本,服务器执行某个脚本,设置了$_SESSION[user] = yqc
,并将session数组保存一个session临时文件,放在在php.ini中设置的session.save_path下面的缓存目录中,如果没有设置就放在系统的缓存目录中
并给浏览器返回了一个session_name()=xxxxx(例如:Set-Cookie PHPSESSID=tvjel2l8579rp3idhbpifutbs2; path=/),cookie的值就是服务器端的session文件的文件名
然后客户端将服务器发回的cookie凭证保存好,每次只需要将这个凭证放在http请求头信息里面一起请求服务器,服务器就会根据这个cookie凭证。获取服务器自己保存的$_SESSION
数组信息,在服务器端进行处理,
session的生命周期,在php.ini中session.cookie_lifetime设置,默认是0(代表只有关闭浏览器才会注销session)
设置SESSION.首先所有的SESSION操作必须要session_start,设置session $_SESSION['user'] = 'yqc';
注销session分为两步:
1注销客服端session_name() (即PHPSESSID),也就是setcookie(session_name(),”,time()-1,’/’);
2.1删除session某一个单元,unset($_SESSION['user']);
2.2注销整个session数组,session_unset()或者$_SESSION = array();这种未删除tmp目录下面的文件
2.3注销整个session和删除文件,session_destroy();
session 相关的php.ini中的配置
session_name session.name
session在服务器中保存的临时目录 session.save_path(1469行)
自动session_start() session.auto_start
session在客户端的session_name(PHPSESSID)cookie的生命周期 session.cookie_lifetime
COOKIE和SESSION的比较:
存储地点:客户端 服务器端
安全性: 低,易伪造 高
可存储类型:不能存放数组/对象/资源 除了资源类型其他都可以
创建方式:setcookie()函数 session_start()开启后设置$_SESSION数组的值
读取: $_COOKIE $_SESSION
销毁: setcookie $_SESSION = array();session_destroy()