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

着重讲一下这几个问题

--

什么是 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('PHPSESSID', session_id(),time()+3600);

--

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

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

    Mvc中: session: if (!string .IsNullOrEmpty(find)) //设置 Session["oip"] = "无锡"; Vie ...

  2. JAVA中的Session和Cookie【转】

    一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于才服务器端保持状态的 ...

  3. Django中的session和cookie及分页设置

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

  4. Django中的Session与Cookie

    1.相同与不同 Cookie和Session都是为了记录用户相关信息的方式, 最大的区别就是Cookie在客户端记录而Session在服务端记录内容. 2.Cookie和Session之间的联系的建立 ...

  5. javaWeb中的session和cookie

    Cookie Cookie 是浏览器提供的一种技术,通过服务器的程序能将一些只须保存在客户端,或者 在客户端进行处理的数据,放在本地的计算机上,不需要通过网络传输,因而提高网页处理的效率,并且能够减少 ...

  6. express中 使用session与cookie

    1.express如何使用session与cookie : https://www.jianshu.com/p/1839e482274e  或  https://www.cnblogs.com/chy ...

  7. ASP.NET MVC 中解决Session,Cookie等依赖的方式

    原文:https://blog.csdn.net/mzl87/article/details/90580869 本文将分别介绍在MVC中使用Filter和Model Binding两种方式来说明如何解 ...

  8. Django中的Session和cookie

    Session和cookie 参考文献:https://www.cnblogs.com/wupeiqi/articles/5246483.html 1.问题引入 1.1 cookie是什么? 保存在客 ...

  9. TP中的session和cookie

    session:1.session('name','value');  //设置session2.$value = session('name');  // 获取所有的session 3.2.2版本新 ...

随机推荐

  1. S3C6410裸奔之旅——RVDS2.2编译、仿真、调试过程 LED流水灯---转的

    S3C6410裸奔之旅——RVDS2.2编译.仿真.调试过程 LED流水灯 (2012-10-13 23:56:30) 转载▼ 标签: s3c6410裸奔 ok6410 rvds2.2 rvds2.2 ...

  2. Nginx 72万连接性能测试(一)

    转自:http://my.oschina.net/chenzhuo/blog/150200?p=2#comments 根据系统内存64G估算单台tengine做反向代理最高支持72万连接.为了验证达到 ...

  3. Kafka与Flink集成

    Apache Flink是新一代的分布式流式数据处理框架,它统一的处理引擎既可以处理批数据(batch data)也可以处理流式数据(streaming data).在实际场景中,Flink利用Apa ...

  4. Python标准异常和异常处理详解

    python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 1.异常处理: 本站Python教程会具体介绍. 2.断言(Asserti ...

  5. Linux设备驱动剖析之SPI(一)

    写在前面 初次接触SPI是因为几年前玩单片机的时候,由于普通的51单片机没有SPI控制器,所以只好用IO口去模拟.最近一次接触SPI是大三时参加的校内选拔赛,当时需要用2440去控制nrf24L01, ...

  6. Linux 常用查找文件或者文件内容

    举例树形图 .|-- test_dir| `-- dir_test_doc.text|-- test_dir2| |-- dir2_test_doc.txt| `-- dir2_test_doc2.t ...

  7. 使用DnsCat反弹shell

    DnsCat技术特点 Dns隧道反弹shell DnsCat服务器的安装 #git clone https://github.com/iagox86/dnscat2.git #cd dnscat2 # ...

  8. 教你如何将word中的表格完美粘贴到ppt中

    经常操作办公软件的人一定有一个困惑,ppt本身表格编辑能力似乎很弱,如果从word里直接将一个编辑好的表格复制粘贴到ppt中,整个表格一定会发生让你没有预料的变化,还得重新花老大的劲去重新编辑,有人屛 ...

  9. jQuery的ajax跨域 Jsonp原理

    1.Jsonp Jsonp(json with padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题. Jsonp是为了解决ajax跨域发送http请求出现的,利用S ...

  10. ALTERA FPGA Quartus 指定memory综合使用 M4K块

    最近遇到个问题, 使用二位数组方式定义了一个RAM ,但是软件每次 都是使用逻辑单元综合 这块memory  , 在ALTERA的网页上 找到了 方法,,在定义的 memory前面加一句画 (* ra ...