PHP COOKIE和SESSION的使用以及区别

PHP】COOKIE和SESSION的使用以及区别

2018年06月03日 21:07:07 追风2019 阅读数 2771更多

分类专栏: PHP

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/createNo_1/article/details/80555972

一、COOKIE

1.  认识cookie

Cookie英文是曲奇饼、小甜品的意思,在web应用中,也类似于程序大餐中的小甜品,在 Internet 中,Cookie 实际上是指小量信息,是由 Web 服务器创建的,将信息存储在用户计算机上的文件,主要作用是记录web应用中用户的基本信息,也可以叫做浏览器缓存Cookies

web应用都是基于http协议进行网络交互,而http协议对每个web页面提交的信息不会进行记录,而很多网站都有会员功能,如果每次跳转页面的时候都重新提交一次会员信息,那这个工作任务就太繁琐,因此有了Cookie的诞生。web应用程序可以在操作时,由服务器端代码生成一个Cookie信息保存在客户端的浏览器中,生成一个很小的文件,此时的文件存在RAM运行内存中,如果用户关闭浏览器会自动删除Cookie信息;如果程序生成一个带有时间设定的cookie,那么cookie文件将存在物理内存中,下次访问同一个web应用时,在设置时间范围内,web应用仍能获取到cookie信息。

 2.  使用cookie

        (1)创建Cookie值

//  函数设置Cookie

Setcookie("标识键值","Cookie值","有效时间","有效作用域 / 表示当前网站下好使");

//  赋值设置Cookie

$_COOKIE['标识键值'] ="Cookie值";

(2)修改Cookie值

//  函数设置Cookie

Setcookie("标识键值","Cookie新值","新有效时间","新的有效作用域");

//  赋值设置Cookie

$_COOKIE['标识键值'] ="Cookie新值";

(3)删除Cookie值

//  函数设置Cookie

Setcookie("标识键值","空值",time()-1);

        (4)查看Cookie值

//  查看所有Cookie值

var_dump($_COOKIE);

//  查看具体的Cookie值

var_dump($_COOKIE['键值']);

         (5)使用举例

<?php

// 增加 Cookie

// 设置Cookie函数法 setCookie();

setCookie("test1","test1");

// 设置Cookie赋值法

$_COOKIE['test2'] ="test2";

// 修改Cookie

// 修改Cookie setCookie()

setCookie("test1","test1->test3");

// 修改Cookie赋值法

$_COOKIE["test2"] ="test2->test4";

// 查询所有Cookie值

var_dump($_COOKIE);

// 查询键值为test2的值

var_dump($_COOKIE['test2']);

// 删除键值为test1的值

setCookie("test1","",time()-1);

// 设置test2值为空

$_COOKIE['test2'] ="";

var_dump($_COOKIE);

    3.  Cookie的缺点

        (1)Cookie相对不安全,容易被盗取,泄露个人隐私;

(2)Cookie必须依赖于客户端,客户端(浏览器)可以关闭Cookie存储功能,如果客户端关闭Cookie,则web应用无法存储Cookie值在客户端本地。 

    4.  注意事项

 (1)使用setCookie设置或修改cookie值后,在第一次刷新页面时打印Cookie不会有结果,只在本地生成Cookie文件,第二次刷新的时候才可以获取新增或修改的值。如果使用$_COOKIE新增值或者修改值,在修改后第一次请求就可以获取到结果。

(2)使用setCookie删除Cookie值时,第一次删除只是删除了文件,在当前代码中打印Cookie数据仍然可以打印出Cookie值,刷新页面,重新访问后,对应的Cookie值已被删除。

所有只要是setCookie函数作用的值,第一次访问不会产生对应的反应,第二次访问会产生效果。而$_COOKIE操作的数据会在第一次访问直接产生效果。

二、SESSION

 1.  认识session

Session概念:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。[copy百度]

 Session机制:session内容一般以文件的形式存储于服务器中,而本地浏览器会存储一个与服务器中session文件对应的Cookie值,Cookie存储的是键值为“PHPSESSID”的Seeion_id值,用户在访问web应用时,每次跳转发生http请求时,会自动把这个存储session_id的Cookie值发送过去,因此web应用的所有页面都可以获取到这个SESSION_ID值,也就可以通过session_id获取服务器中存储的session值,当用户关闭浏览器后,cookie存储的session_id自动清除,一般服务器存储的session文件也会在30分钟后自动清除。【大白话说明^O^】

 2.  使用session

        (1)Session在PHP中使用需要先开启session,因此第一步是开启session,函数是session_start()。在开启session的同时,浏览器会自动生成一个session_id,类似于“negp7iebtghcukaj06butg4a55”。

        (2)添加Session

$_SESSION['session键值'] ="session值";

        (3)修改session

$_SESSION['session键值'] ="session新值";

        (4)查看session值

// 查看全部session

var_dump($_SESSION);

// 单独查看键值为test的Session值

var_dump($_SESSION['test']);

        (5)删除session

// 删除session值,但保留数据类型

$_session['session键值'] =array();

// 删除cookie中的session_id

$session_id = session_name();

setCookie($session_id,"",time()-1);

// 释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的session_id

session_unset();

// 删除当前用户对应的session文件以及释放session_id,但内存中的$_SESSION变量内容依然保留

session_destroy();

        (6)使用举例

<?php

// 开启session

session_start();

// 增加session

$_SESSION['test'] ="session增加内容";

$_SESSION['test1'] ="session增加内容";

// var_dump($_SESSION['test']);

// 修改session

$_SESSION['test'] ="session修改内容";

// var_dump($_SESSION['test']);

// 查看全部session

var_dump($_SESSION);

// 单独查看键值为test的Session值

var_dump($_SESSION['test']);

// 删除session

// 删除session的变量值(但保留数据类型)

// $_SESSION['test'] = array();

// 删除所有的SESSION(包括文件)一般用于退出操作

// 1. 使客户端COOKIE中的SESSIONID过期

// $session_id = Session_name();

// setcookie($session_id,"",time()-1);

// 2. 释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的session_id

// session_unset();

// 3. 删除当前用户对应的session文件以及释放session_id,但内存中的$_SESSION变量内容依然保留

session_destroy();

var_dump($_SESSION);

 3.  session缺点

 Session完全依赖于Cookie,所以cookie的缺点同样是session的缺点。

4.  注意事项

 session_start()函数前面不得有任何其他语句。

三、COOKIE和SESSION的区别

(1)存储位置:Cookie存储在客户端浏览器中,相对不安全;Session内容所在文件存储在服务器中,一般在根目录下的tmp文件夹中,相对更安全。

(2)数量和大小限制:Cookie存储的数据在不同的浏览器会有不同的限制,一般在同一个域名下,Cookie变量数量控制在20个以内,每个cookie值的大小控制在4kb以内。session值没有大小和数量限制,但如果数量过多,会增大服务器的压力。

(3)内容区别:cookie保存的内容是字符串,而服务器中的session保存的数据是对象。

(4)路径区别:session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。

四、参考文献

1.session和cookie的区别

2.session是什么

3.Session是怎么实现的?存储在哪里?

4.Cookie使用时需要注意个数及大小限制

5.HTTP Header 详解

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • 一、COOKIE 认识Cookie英文是曲奇饼、小甜品的意思,在web应用中,也类似于程序大餐中的小甜品,在 In...
    Mr_Arvin阅读 144评论 0 2
  • 简介Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据。一般情况 下,Cookie...
    苏宇lovecc阅读 672评论 0 2
  • 背景在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cooki...
    时芥蓝阅读 2,350评论 1 17
  • 一、会话控制(session与cookie) 1.cookie简介 Cookie是存储在客户端浏览器中的数据,我们...
    空谷悠阅读 615评论 0 5
  • 一、cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而sess...
    有你相伴一生阅读 400评论 0 0