---------------------------------------------------------------------------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的生命周期

  1. 没有设置生命周期的话,关闭浏览器后COOKIE自动结束,这种COOKIE叫做会话COOKIE,保存在内存;
  2. 设置了生命周期的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

  1. 在登录之前提醒用户必须打开cookie,这是很多论坛的做法;
  2. 设置php.ini文件中的session.use_trans_sid = 1,或者编译时打开-enable-trans-sid选项,让PHP自动跨页面传递session_id;
  3. 通过GET方法,隐藏表单传递session_id;
  4. 使用文件和数据库存储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缓存

  1. 缓存位置:session缓存是将网页的内容存储到IE客户端的Temporary Internet Files文件下,并且可以设置缓存的时间;
  2. 作用:当第一次浏览网页后,页面的部分内容在规定的时间内就被临时存储在客户端的临时文件夹中,这样在下次访问这个页面时,就可以直接读取缓存中的内容,从而提高网站的浏览速率。
  • 缓存使用的函数:

    • 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)
  • 该函数的参数
  1. open(save_path,session_name)  找到session存储地址,取出变量名称
  2. close()                                            不需要参数,关闭数据库
  3. read(key)                                       读取session键值,key对应session_id
  4. write(key,data)                              其中data对应设置的session变量
  5. destroy(key)                                  注销session对应的session键值
  6. 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的更多相关文章

  1. cookie,session,sessionid

    cookie,session,sessionid http协议是无状态的,意思是每次请求的状态不会保存.因此,产生了cookie,session之类保存会话状态的机制.1.什么是cookiecooki ...

  2. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  3. 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法

    单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...

  4. 会话Cookie及session的关系(Cookie & Session)

    会话Cookie及session的关系(Cookie & Session) 在通常的使用中,我们只知道session信息是存放在服务器端,而cookie是存放在客户端.但服务器如何使用sess ...

  5. cookie,session,token的定义及区别

    参考了很多文章总结的. 1.cookie(储存在用户本地终端上的数据) 服务器生成,发送给浏览器,浏览器保存,下次请求同一网站再发送给服务器. 2.session(会话) a.代表服务器与浏览器的一次 ...

  6. Java web学习 Cookie&&Session

    cookie&&session 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会 话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Coo ...

  7. Cookie&Session(会话技术)

    一.Cookie技术 从打开一个游览器访问某个站点,到关闭这个游览器的整个过程成为一次会话 会话技术分为Cookie和Session Cookie:数据存储在客服端本地,减少对服务端的存储的压力,安全 ...

  8. Cookie Session和自定义分页

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  9. python Cookie Session 相关用法

    Cookie一.前言1.http协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响 应情况直接影响,也不会直接影响后面的请 ...

  10. django - 总结 - cookie|session

    Cookie是通过HTTP请求和响应头在客户端和服务器端传递的. 在Web开发中,使用session来完成会话跟踪,session底层依赖Cookie技术. --------------------- ...

随机推荐

  1. Java/javaEE/web/jsp/网站编程环境配置及其软件下载和网站路径

    Java/javaEE/web/jsp/网站编程环境配置及其软件下载和网站路径 (2015/07/08更新) JDK下载地址(JDK官网下载地址) 下载地址为:http://www.oracle.co ...

  2. BZOJ 2286 树链剖分+DFS序+虚树+树形DP

    第一次学习虚树,就是把无关的点去掉.S里维护一条链即可. #include <iostream> #include <cstring> #include <cstdio& ...

  3. c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针

    1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...

  4. 浅谈对ECharts的使用

    上个月的项目,其中有一个模块用的是ECharts来实现的,分别用了折线图,环形图,还有漏斗图,这几个都算比较常见的了,尤其是折线图,环形图,用的最多的就是它们了.之前也没怎么接触过ECharts,实际 ...

  5. javascript之小积累-.-typeof与instanceof的区别

    1.typeof 是获取一个变量或表达式的类型,返回的值通常是string, number, boolean, object(null, 数组, 对象), function, undefined,可以 ...

  6. C# 计算时间差 用timespan函数

    TimeSpan 结构  表示一个时间间隔. 命名空间:System 程序集:mscorlib(在 mscorlib.dll 中) 1.DateTime值类型代表了一个从公元0001年1月1日0点0分 ...

  7. Xcode 设置 ARC&MRC混用

    如果你的项目使用的非 ARC 模式,则为 ARC 模式的代码文件加入 -fobjc-arc 标签.如果你的项目使用的是 ARC 模式,则为非 ARC 模式的代码文件加入 -fno-objc-arc 标 ...

  8. 《JavaScript模式》第3章 字面量和构造函数

    @by Ruth92(转载请注明出处) 第3章:字面量和构造函数 一.创建对象的三种方式 // 对象字面量 var car = {goes: "far"}; // 内置构造函数(反 ...

  9. UE4 VR 模式下全屏解决办法

    方法步骤: 1.打开关卡蓝图添加如下代码: 2.设置配置文件在工程目录里面找到 Config 文件夹在里面添加一个配置文件并命名为 DefaultGameUserSettings.ini 把如下内容贴 ...

  10. android之ActionBar

    最近忙着做项目了,很久么来博客园看看了.最近项目中用到了actionbar,那就依我个人之建,来跟大家谈谈吧. 首先最重的是看你自己所见的项目的最小Api是为11,(在设置Minsdkversion最 ...