这两天通过对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. 取消svn版本控制

    删除项目中的版本控制,即删除项目文件夹下的所有.svn文件夹(在做项目的时候,有时候想把项目拷回去看看,但是文件太大了,而且压缩起来很慢.这主要是因为在项目中有大量的.svn文件夹.所以才想把.svn ...

  2. sqlserver2008行锁

    select * from tablename WITH (UPDLOCK) where Id=#value#

  3. 关于html5的几个新标签在IE9之前不支持的解决办法

    IE8及之前的浏览器不支持用CSS的方法来使用这些尚未支持的结构元素,为了在Internet Explorer浏览器中也能正常使用这些结构元素,需要使用JavaScript脚本,如下:<scri ...

  4. haxe 中使用音效

    将wavSound.wav音效文件放到assets/sounds下, 在project.xml加入以下代码: <assets path="assets/sounds" ren ...

  5. Windows下Apache+Django+mod_wsgi的static和media问题处理

    配置好了Apache可以访问Django工程了(参见前篇:Windows编译安装mod_wsgi,配合使用Django+Apahce) 但是Django中的static.media等文件Apache是 ...

  6. Git学习 -- 自定义Git

    忽略特殊文件 在工作区创建.gitignore文件,编写内容 # Windows: Thumbs.db ehthumbs.db Desktop.ini # Python: 忽略Python编译产生的. ...

  7. Linux学习 -- Shell编程 -- 条件判断

    按照文件类型进行判断 两种格式 test -e /root/install.log [ -e /root/install.log ]   注意空格  适合用于脚本中 echo $?可以看到结果 [ - ...

  8. CentOS安装VirtualBox增强工具

    安装过程中出现错误: Bulding the VirtualBox Guest Additions Kernel modules failedYour system does not seem to  ...

  9. oracle 管理

    1.管理数据的用户主要是:sys和system. 区别:(1)sys所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle是至关重要的,由数据库自己维护,任何用户都 ...

  10. Struts2 程序步骤

    1. 新建一个web project, 手动导入包: D:\Java\jar\struts-2.3.24.1\apps\struts2-blank\WEB-INF\lib copy到 WEB-INF/ ...