cookie与session区别及用法

96
马大哈tt
2017.11.21 21:44 字数 524

cookie与session 区别

下面是cookie与session各自的特点,其实通过它们特点的不同就能看出他们的区别,我就不总结区别了,可以将他们的特性进行比较,不同之处就是他们的区别。

cookie特性

1.cookie是存储在浏览器客户的一小片数据;
2.cookie可以同时被前台与后台操作;
3.cookie可以跨页面存取;
4.cookie是不可以跨服务器访问的;
5.cookie有限制; 每个浏览器存储的个数不能超过300个,每个服务器不能超过20个,数据量不能超过4K;
6.cookie是有生命周期的,默认与浏览器相同,如果进程退出,cookie会被销毁

session特性
  1. seesion数据存储在服务器端;
  2. 每一个会话分配一个单独的session_id;
  3. 该session_id通过cookie传送到前台,默认的session_id名称是PHPSESSIONID
  4. 前台只能看到session的ID,而不能修改session值
  5. 使用session之前需要先开启会话
  6. session存储在session数组$_SESSION
  7. session存储方式比较安全,但是如果session数量过多,会导致服务器性能下降

cookie与session语法

cookie
  1. 前端使用语法:
    // 设置一个cookie
    document.cookie = "user=ltt; age=18 ;like= h5";
    // 读取所有的cookie
    str = document.cookie;
//从所有cookie取出一个特定名的cookie值
    start = str.indexOf("num=") + 4;
    end = str.indexOf(";",start);
    // 使用substring获得值
    var val = str.substring(start,end);

由于cookie是以键值对形式存储的,用每个分号分割每个cookie,如下图,所以我们从cookie中取出一个特定名的cookie值需要使用上面代码的js字符串的一些方法。


cookie值.png

我们经常会需要设置一个cookie和取cookie里的值,因此我们可以封装两个函数,一个设置cookie,一个取cookie的值。大家需要用的可以直接拷贝。

// 取cookie值 参数为cookie你要取得值所对应的名称
function getcookie(name){
                var str = document.cookie;
                start = str.indexOf(name+"=")+ name.length+1;
                end = str.indexOf(";",start);
                end = end == -1 ? str.length:end;
                // 使用substring获得值
                var val = str.substring(start,end);
                return val;
            }
// 设置cookie
// 参数(名称,名称对应的值,路径,过期时间)
function setCookie(name,value,path,expires){
                // 设置一天之后失效
            var current_date = new Date();
            // 将日期设置为一天之后的日期
            current_date.setDate(current_date.getDate() + 1);
            // 将日期转成GMT对象
            expires_str = current_date.toGMTString();
            // 设置cookie的过期日期
            document.cookie = name + "=" + value+"; path="+path+"; expires="+expires_str;
        }

2.后台使用的方法
后台设置语法比较简单,就一句代码,如下;

// 过期时间是时间戳,比如一天后失效,那就是24*3600秒失效
setcookie("newMember","ltt",time()+24*3600);
session

注意:使用session之前都必须先开启会话,使用 session_start(); 开启会话

    session_start();
    $_SESSION['user'] = 'ltt';
    $_SESSION['age'] = 10;  

介绍一个header()函数:输出自定义http头文件

if(!empty($_SESSION['user'])){
            // header函数输出自定义http头文件
            // header("Location: url") 指定当前页面跳转到url页面
            header("Location:index2.html");
        }else{
            header("Location:login.html");
        }
h5探索之旅
Gupao