这两天通过对Cookie和Session的查找和了解,网上关于它们两个的基础知识点都是差不多的,也收藏了几篇不错的博客,同时自己做了些实验后,有了以下几点了解:

1、setcookie 这里有三个地方需注意:

  (1)expire 是指 cookie 的有效期,之前跟 cookie 的属性 maxAge 搞混,以为同样写个正数就可以,其实它的时间是从最原始时间 Thu, 01-Jan-1970 00:00:01 GMT 开始算起的,所以一开始写个很小的数字怎么弄都无法获取到 cookie,其实是有效期不起作用,原始时间加上不大的正数肯定不会超过现在的时间,最好写为:time() + 正数。

  (2)domain 指的是域,表示设置的 cookie 在某个域下可用。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该 cookie。注意第一个字符必须为“.”。不写的话默认是你网站的域名了。

  (3)path 指的是路径,如果设置为“/sessionWeb/”,则只有 contextPath 为“/sessionWeb”的程序可以访问该 cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。不写的话默认是 "/"。

2、设置 cookie 后需刷新或重新打开页面才看得到 cookie,因为第一次是设置,发送给客户端,客户端也无法携带,第二次才会携带。

3、使用 session 时,其实它先通过 session_start() 构造 PHPSESSID 的 session id,并作为 cookie 传给客户端,之后客户端就会携带这个 PHPSESSID 的 cookie,session id 默认在域下,因此同个浏览器访问域的不同页面 session id 会一样。

4、对于同个连接,若没对 session 进行清除或过期或关闭页面,session_start() 只会生成一次 id。

5、可以在 php.ini 文件对 session 的相关属性进行修改,如 session 存储方式、存放路径、过期时间等等。

6、setcookie(session_name(),'',time()-3600,'/');    //删除本地相关联的

   session_unset();                                     //清空内存中的cookie或者是$_SESSION = array();

session_destroy();                                            //删除服务器端的session文件

7、可以通过 session_id() 自己设置 session id。

8、session 可以存储在内存、文件或数据库,在 I/O、性能、存储大小等各有优缺点,只是对于存储在数据中的话,如果事先无法确定 session 格式的话,数据库存储难以扩展,对于多维的数据比较麻烦,虽然可以保存很好。

9、对于 Laravel,根据网上了解,它的 session 机制没有使用 PHP 的机制,而是自己重新构建一套自己的机制,而且它每个请求都会发送 laravel_session 的 cookie,这样可以避免被劫持,保证安全性。而且同个域下的项目,如果两个项目一样的话,会造成 session 冲突从而无法进一步请求,会被自己设置的过滤或安全机制给拒绝。

10、session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc"); 设计自己所需要的 session_start() 机制。

11、cookie 和 session 设置前不要有任何输出,因为它们是以请求头的形式发出的,http 规定发送请求头时不能有内容输出,否则会报错。

12、对于不同客户端的连接,session分别建各自的session文件来保存各自的数据,不会使会话冲突,而且在代码中,如下:

  firefox:$_SESSION['user'] = 'firefox';

  chrome : $_SESSION['user'] = 'chrome';

  $_SESSION['user']并不会被替换,而是在各自的文件区域里赋值数据;获取时会根据不同的客户端获取到对应的数据。

PHP的Cookie、Session和跟Laravel相关的几点了解的更多相关文章

  1. node学习笔记9——cookie,session相关操作

    下面讲的都是基Express及相关的包.所以在实践本篇文章之前,通过npm安装好Express, cookie-parser, cookie-session这三个安装包. 先简单说一下,如何用Expr ...

  2. session和cookie的区别和联系详解,Cookie Session相关看这篇就够了。

    本文转自:91博客:原文地址:http://www.9191boke.com/199015867.html 有一朋友做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么 ...

  3. python Cookie Session 相关用法

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

  4. Cookie Session和自定义分页

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

  5. 【转】Cookie/Session机制详解

    Cookie/Session机制详解   会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息 ...

  6. python自动化开发-[第十九天]-分页,cookie,session

    今日概要: 1.cookie和session 2.csrf 跨站请求伪造 3.自定义分页 一.上节回顾: http请求的本质: - Http请求本质 浏览器(socket客户端): 2. socket ...

  7. day70 cookie & session 前后端交互分页显示

    本文转载自qimi博客,cnblog.liwenzhou.com 概要: 我们的cookie是保存在浏览器中的键值对 为什么要有cookie? 我们在访问浏览器的时候,千万个人访问同一个页面,我们只要 ...

  8. 聚合和分组F,Q和事物,cookie,session

    聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典. 键的名称是聚合值的标识符,值是计算出来的聚合值.键的名称是按照字段和聚合函数的名称自动生成出 ...

  9. node.js cookie session使用教程

    众所周知,HTTP 是一个无状态协议,所以客户端每次发出请求时,下一次请求无法得知上一次请求所包含的状态数据,如何能把一个用户的状态数据关联起来呢? cookie 首先产生了 cookie 这门技术来 ...

随机推荐

  1. HDU2050 由直线分割平面推广到折线分割平面

    直线分割平面问题: 加入已有n-1条直线,那么再增加一条直线,最多增加多少个平面? 为了使增加的平面尽可能的多,我们应该使新增加的直线与前n条直线相交,且不存在公共交点.那么我们可以将新增加的这条直线 ...

  2. JAVA-基本知识

    1.JAVA跨平台 其实就是在每个平台上要安装对应该操作系统的JVM,JVM负责解析执行,即实现了跨平台.JVM是操作系统与java程序之间的桥梁. 2.JRE:java运行环境,包含JVM+核心类库 ...

  3. 初识Jmeter(一)

    倒霉熊的推荐: 文本学习网址:http://m.open-open.com/m/doc/category/105 视频学习网址: 软件学习网:http://www.ask3.cn/index.html ...

  4. Dom++完美版得到元素到html的距离6/4/21

    function getTop(obj) { var pos={left:0,top:0}; while(obj) { pos.left+=obj.offsetLeft; pos.top+=obj.o ...

  5. JS-DOM操作应用

    父级.appendChild(子节点) 父级.insertBefore(子节点,在谁之前) <title>无标题文档</title> <script> window ...

  6. java 数据流

    Example10_11.java import java.io.*; public class Example10_11 { public static void main(String args[ ...

  7. [LeetCode] Magical String 神奇字符串

    A magical string S consists of only '1' and '2' and obeys the following rules: The string S is magic ...

  8. ping命令使用技巧(一次Ping多个地址)

    打开windows 命令行 窗口, 在命令行输入以下命令: for /l %i in (1,1,255) do ping -n 1  -w 60 192.168.0.%i  | find " ...

  9. springMVC简单的安全防御配置

    1,使用 spring form 标签 防 csrf 攻击 2,标明请求方法:RequestMethod.GET,RequestMethod.POST, PATCH, POST, PUT, and D ...

  10. Ubuntu里字符编码设置

    Ubuntu里字符编码设置   Ubuntu系统在默认的状况下只支持中文UTF-8编码,但是我们写的一些文档,还有java代码编译时采用gbk编码.所以需要修改.步骤如下:  www.2cto.com ...