2018/04/21 PHP 中的Session和Cookie知识总结

在之后的工作和学习中,更是发现了自己对于基础知识的不扎实,于是又返回头来学习,确实很多东西是之前没注意或是没掌握的。

着重讲一下这几个问题

--

什么是 Cookie ?

简单来说:

  因为 HTTP 无状态的,所以为了想在客户端保存一些数据来和服务端进行交互,我们需要在客户端存一部分数据,就是 Cookie 。

PHP 如何设置 Cookie 呢?

看一下 PHP 官方对于设置 Cookie 函数的定义

bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )

介绍一下 setcookie() 这里面参数的含义

  $name  顾名思义,设置 Cookie 的名字。

  $value  设置这个 Cookie 的值。

  $expire   设置 Cookie 的过期时间,如果不设置或者为空,则表示在关闭浏览器时候销毁 Cookie。

        注意,这个时间是真正意义上的结束时间,应该是以你当前的时间+过期时间来完成的,单位为秒。

        例如:

          setcookie(‘name‘, ‘hong.li‘, time() + 7*24*3600); // 当前时候后一周过期。

  $path   Cookie 有效的服务器路径。 默认值是设置 Cookie 时的当前目录。

         设置成 ‘/‘ 时,Cookie 对整个域名 domain 有效。        

       如果设置成 ‘/foo/‘, Cookie 仅仅对 domain 中 /foo/ 目录及其子目录有效(比如 /foo/bar/)。

  $domain 设置跨域。

  $secure    是否只接受 HTTPS 传来的 Cookie ,默认为 false;

  $httponly  是否只接受 HTTP 协议发来的Cookie,不允许 JS 来直接操作 Cookie ,可以有效防止 XXS 攻击,同时也可以在 php.ini 中设置。

--

除了 setcookie 这种方法,还有其他的方法可以设置 cookie 么?

当然是有的,先说一个 PHP 设置 Cookie 的其他一个函数

bool setrawcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

它和 setcookie 的唯一区别就是 setcookie 会对值进行 urlencode 编码,而他不会。

第二种方式是直接发送一个 HTTP 头,指定 Set-cookie ,在浏览器中,会认为你是设置 cookie 的属性

header(‘Set-cookie: username=hong.li‘);

再看看你的浏览器们是不是有这个 Cookie 了。

--

如何删除我们已经设置好的 Cookie 呢?

浏览器手动删除,哈哈~

通过 PHP 直接把 Cookie 设置成已过期的时间,Cookie就会被删除。

--

已经有了 Cookie 可以设置信息了,我们还用 SESSION 干什么?

我们都知道 Cookie 是存在客户端的。是容易篡改的,再说也不能使用一个客户端的凭证来判断用户身份吧。

扯远了。。。。。。

总之,使用 Cookie 信息是远远不够的,SESSION 是服务端的一种存储状态。

--

SESSION 原理是什么?

在开始了 session 之后,在浏览器访问这个页面时候。

  1:服务端会检测 是否有 SESSION .

  2: 如果没有,则产生一个随机的 PHPSESSID, 并且自动发送发送一个 Cookie,这个 Cookie 在关闭浏览器后消失。

  3:如果有,则读取对应 SESSION 信息。

--

如何使用SESSION?

在 PHP 我们首先需要初始化 SESSION。

session_start();

之后可以在 $_SESSION 这个全局变量中增加或者我们的值

$_SESSION[‘username‘] = ‘hong.li‘;

之后我们就可以取到对应的值了。

需要注意的是,虽然我们使用的默认 Cookie ,保存了 SESSION_ID 的信息,但是这个信息会在关闭浏览器后消失,我们明显不想这样。于是我们会在这里使用 setcookie 来设置我们的信息。

setcookie(‘username‘,‘hong.i‘,time()+3600);

--

原文地址:https://www.cnblogs.com/25-lH/p/8900627.html

时间: 2024-11-13 02:08:40

2018/04/21 PHP 中的Session和Cookie知识总结的相关文章

MVC、控件、一般处理程序中的session and cookie

Mvc中: session: if (!string .IsNullOrEmpty(find)) //设置 Session["oip"] = "无锡"; ViewBag.oip =Session["oip"]; if (Session["oip"] == null) //获取 Session["oip"] = null; //设为null Session.Timeout = 1; //设置过期时间 <

Django中的session和cookie

session和cookie 一. 概念理解 你可能有留意到当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会有各种各样的桌子的链接.这是因为 你浏览某个网页的时候,WEB 服务器会先送一些资料放在你的计算机上,类似于你打的文字,选的一些东西什么的,Cookie 会帮你都纪录下来.当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie里的内容来判断使用者,送出特定的网页内

TP中的session和cookie

session: 1.session('name','value');  //设置session2.$value = session('name');  // 获取所有的session 3.2.2版本新增   $value = session();3.session('name',null); // 删除name  session(null); // 清空当前的session4.// 判断名称为name的session值是否已经设置    session('?name'); cookie: 1.

YII中的session和cookie

session的使用 存储数据 Yii::app()->session["名"] = 值; 取数据 $变量 = Yii::app()->session["名"]; 销毁一个session变量值 unset(Yii::app()->session["名"]); 清除所有session变量值 Yii::app()->session->clear(); 销毁服务器的session信息 Yii::app()->sess

Session 初步(三) 之 JSP 中 HTTP Session 的应用

一.术语Session Session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个 Session.有时候我们可以看到这样的话"在一个浏览器会话期间,...",这里的会话一词用的就是其本义,是指从一个浏览器窗口打开到关闭这个期间 ①.最混乱的是"用户(客户端)在一次会话期间"这样一句话,它可能指用户的一系列动作(一般情况下是同某个具体目的相关的一系列动作,比如从登录到选购商品到

(转)http 之session和cookie

http://www.cnblogs.com/xuxm2007/archive/2011/12/05/2276705.html Session简介 摘 要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术.本 文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答. 目录: 一.术语session 二.HTTP协议与状态保持 三.理解c

ThinkPHP3验证码、文件上传、缩略图、分页(自定义工具类、session和cookie)

验证码 TP框架中自带了验证码类 位置:Think/verify.class.php 在LoginController控制器中创建生存验证码的方法 login.html登陆模板中 在LoginController控制器中判断验证码是否正确并且判断登陆是否成功 文件上传 用到的知识点: 1.文件上传的时候,要设置表单的enctype属性 2.$_FILE[名字][]用来接收文件的信息 第二维的字段: name size error type tmp_name 3.move_uploaded_fil

java中的session

会话技术 序号 名称 数据存放位置 1 Cookie技术 会话数据保存在浏览器客户端. 2 Session技术 会话数据保存在服务器端. 2.Session技术 2.1.引入 Cookie的局限: 1)Cookie只能存字符串类型.不能保存对象 2)只能存非中文. 3)1个Cookie的容量不超过4KB. 如果要保存非字符串,超过4kb内容,只能使用session技术!!! Session特点:会话数据保存在服务器端.(内存中) 1.2.Session技术核心 HttpSession类:用于保存

asp中设置session过期时间方法总结

http://www.jb51.net/article/31217.htm asp中设置session过期时间方法总结 作者: 字体:[增加 减小] 类型:转载 asp中默认session过期时间为20分钟,很多情况下不够,今天有客户要求很多就要重新登录了,所以准备了这篇文章,方便需要的朋友 如果程序中没有设置session的过期时间,那么session过期时间就会按照IIS设置的过期时间来执行,IIS中session默认过期时间为20分钟,IIS中session时间可以更改 时间设置要放在前面