COOKIE&&SESSION
---------------------------------------------------------------------------COOKIE---------------------------------------------------------------------------
1.了解COOKIE是什么,能做什么;
一般以文件形式保存在硬盘里面,如果没有设置生命周期的话叫会话COOKIE,保存在内存,关闭浏览器后失效
2.setcookie(string name[,string value[,int expire[,string domain[,int secure]]]])
1)创建COOKIE;
2)读取COOKIE;
在PHP中可以直接通过超级全局数组$_COOKIE[]来读取浏览器端的COOKIE值。
3)删除COOKIE;
删除COOKIE和创建COOKIE的方式基本相似,删除COOKIE也使用setcookie()函数,删除COOKIE只需要将setcookie()函数中的第二个参数设置为空值,将第三个参数COOKIE的失效时间设置为小于系统的当前时间即可:
例如:
1)setcooke("name","",time()-1);
2)setcookie("name","",0); //把失效时间设置为0,也可以直接删除COOKIE;
3.COOKIE的生命周期
- 没有设置生命周期的话,关闭浏览器后COOKIE自动结束,这种COOKIE叫做会话COOKIE,保存在内存;
- 设置了生命周期的COOKIE是以文件形式保存在硬盘里面;
---------------------------------------------------------------------------COOKIE---------------------------------------------------------------------------
--------------------------------------------------------------------------SESSION----------------------------------------------------------------------------
1.SESSION是什么能做什么;
2.启动会话(两个函数)
| 1.session_start() [该函数之前浏览器不能有任何输出]
| 2.session_register() [要求设置php.ini文件的选项register_globals指令为on;]
\/
注册会话(创建)
| 创建变量并赋值:
| session_start(); //启动session
\/ $_SESSION["admin"] = 'session'; //声明一个名为admin的变量,并赋值
使用会话
| $_SESSION["admin"];
|
\/
删除会话
1).删除单个会话
unset($_SESSION['user']);
2).删除多个会话;
$_SESSION = array();
3).结束当前会话
session_destroy();
3.SESSION的生存周期
1.客户端没有禁止COOKIE
- setcookie();
<?php
session_start();
$time = 1*60;
setcookie(session_name(),session_id(),time()+$time,'/'); //给出session失效时间
$_SESSION['user'] = 'mr'; ?>
- 说明:在上例代码中的setcookie函数中,session_name是session的名称,session_id是判断客户端用户的标识,因为session_id是随机产生的唯一名称,所以session是相对安全的,失效时间和cookie的失效时间一样,最后一个参数为可选参数,是放置cookie的路径。
2.客户端禁止COOKIE
- 在登录之前提醒用户必须打开cookie,这是很多论坛的做法;
- 设置php.ini文件中的session.use_trans_sid = 1,或者编译时打开-enable-trans-sid选项,让PHP自动跨页面传递session_id;
- 通过GET方法,隐藏表单传递session_id;
- 使用文件和数据库存储session_id,在页面间传递中手动调用。
4.SESSION的高级应用
1)SESSION临时文件 [session_save_path()]
- 在服务器中,如果将所有用户的session都保存到临时目录中,会降低服务器的安全性和效率,打开服务器你存储的站点会非常慢。在PHP中,使用函数 session_save_path()可解决这个问题。
- 例:
$path = './tmp/'; //设置session存储路径 session_save_path($path); session_start(); //初始化session $_SESSION['username'] = true;
2)SESSION缓存
- 缓存位置:session缓存是将网页的内容存储到IE客户端的Temporary Internet Files文件下,并且可以设置缓存的时间;
- 作用:当第一次浏览网页后,页面的部分内容在规定的时间内就被临时存储在客户端的临时文件夹中,这样在下次访问这个页面时,就可以直接读取缓存中的内容,从而提高网站的浏览速率。
- 缓存使用的函数:
- session_cache_limiter([string cache_limiter])
- 参数cache_limiter为public或private。
- 缓存位置:客户端【注:不是在服务器端】
- 设置缓存时间的函数
- int session_cache_expire(int new_cache_expire])
- 参数cache_expire是session缓存时间,单位为分钟。
- 注意:这两个session缓存函数必须在session_start()调用之前使用,否则出错;
- 例子:
session_cache_limiter('private'); $cache_limit = session_cache_limiter(); //开启客户端缓存 session_cache_expire(30); $cache_expire = session_cache_expire(); //设置客户端缓存时间 session_start();
3)SESSION数据库存储
- 为什么要用到SESSION数据库存储?
- 虽然通过改变SESSION存储文件夹Session不至于将临时文件夹填满而造成站点瘫痪,但是可以计算一下,如果一个大型网站一天登录1000人,一个月登录了30000人,这时候站点中存在30000个SESSION文件,要在这30000个文件中查询一个session_id应该不是件轻松的事情,那么这时就可以用SESSION数据库存储,也即是PHP的session_set_save_handler()函数。
- bool session_set_save_handler(string open,string close,string read,string write,string destroy,string gc)
- 该函数的参数
- open(save_path,session_name) 找到session存储地址,取出变量名称
- close() 不需要参数,关闭数据库
- read(key) 读取session键值,key对应session_id
- write(key,data) 其中data对应设置的session变量
- destroy(key) 注销session对应的session键值
- gc(expire_time) 清除过期session记录
以上方法可以自行封装;
session_set_save_handler('_session_open','_session_close','_session_read','_session_write','_session_destroy','session_gc'); session_start(); //下面为我们定义的SESSION
$_SESSION['user'] = 'mr'; $_SESSION['pwd'] = 'mrsoft';--------------------------------------------------------------------------SESSION----------------------------------------------------------------------------
COOKIE&&SESSION的更多相关文章
- cookie,session,sessionid
cookie,session,sessionid http协议是无状态的,意思是每次请求的状态不会保存.因此,产生了cookie,session之类保存会话状态的机制.1.什么是cookiecooki ...
- Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期
servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...
- 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法
单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...
- 会话Cookie及session的关系(Cookie & Session)
会话Cookie及session的关系(Cookie & Session) 在通常的使用中,我们只知道session信息是存放在服务器端,而cookie是存放在客户端.但服务器如何使用sess ...
- cookie,session,token的定义及区别
参考了很多文章总结的. 1.cookie(储存在用户本地终端上的数据) 服务器生成,发送给浏览器,浏览器保存,下次请求同一网站再发送给服务器. 2.session(会话) a.代表服务器与浏览器的一次 ...
- Java web学习 Cookie&&Session
cookie&&session 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会 话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Coo ...
- Cookie&Session(会话技术)
一.Cookie技术 从打开一个游览器访问某个站点,到关闭这个游览器的整个过程成为一次会话 会话技术分为Cookie和Session Cookie:数据存储在客服端本地,减少对服务端的存储的压力,安全 ...
- Cookie Session和自定义分页
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- python Cookie Session 相关用法
Cookie一.前言1.http协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响 应情况直接影响,也不会直接影响后面的请 ...
- django - 总结 - cookie|session
Cookie是通过HTTP请求和响应头在客户端和服务器端传递的. 在Web开发中,使用session来完成会话跟踪,session底层依赖Cookie技术. --------------------- ...
随机推荐
- 利用中文数据跑Google开源项目word2vec
一直听说word2vec在处理词与词的相似度的问题上效果十分好,最近自己也上手跑了跑Google开源的代码(https://code.google.com/p/word2vec/). 1.语料 首先准 ...
- excel曲线拟合怎么弄
在做社会调研或科学实验时常常需要把得到的实验数据拟合成曲线图,这样可以使结果形象易懂.下面将介绍怎么用excel来快速地进行曲线拟合.包括添加平滑曲线,线性,指数,幂,多项式(如二次曲线,三次曲线.. ...
- ChIP-seq Peak caller MACS index out of range问题解决
使用MACS1.4 进行peak calling的时候发现一个比较奇怪的问题: 我的某些文件无法被MACS1.4 进行peak calling,出现如下的信息: Traceback (most rec ...
- 转 UML类图几种关系的总结
UML类图几种关系的总结 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregati ...
- background: url 背景图片加时间戳不显示图片
在项目中一段这样的代码 背景图片加时间戳图片显示不出来 <div id="header" class="header clearfix" style=&q ...
- cocos2d Slider 透明滑动部件无法生成解决办法
用cocos studio 2.3.2 制作声音大小控制滑条的时候遇到了一个奇葩bug我把透明图片和其它资源打包到合图里面然后到到cocos stdudio里面 那张透明图片变成了只有一个像素的点,最 ...
- distributed 以及 distributional 语义表达的区别
昨天在审核资讯翻译的时候遇到这两个单词,文章里讲的也不清楚,感觉翻译的也不到位.今天就单独拿出来比较一下吧.尽管这两个单词相似,它们的具体实现方法还是有很大区别的. Distributional wo ...
- oracle中的装换函数
日期装换成字符的函数:TO_CHAR(date[,fmt[,params]]) 默认格式:DD-MON-RR 参数说明: date:将要装换的日期 fmt:装换的格式 params:日期的语言(可以不 ...
- 【转】AngularJS 取消对 HTML 片段的转义
今天尝试用 Rails 做后端提供 JSON 格式的数据, AngularJS 做前端处理 JSON 数据,其中碰到 AngularJS 获取的是一段 HTML 文本,如果直接使用 data-ng-b ...
- 第一篇T语言实例开发(版本5.3),带错误检测的加减乘除运算器
带错误检测的加减乘除运算器 表达式 TC综合开发工具里的表达式大体分为:计算表达式.条件表达式 计算表达式: 它一般是用在赋值过程中,或者是和条件表达式混合使用这样的表达式里只有数字运算符(如:+.- ...