您的位置:首页 > 编程语言 > PHP开发

COOKIE和SESSION

2015-05-04 21:54 381 查看
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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PHP常用函数 PHP