PHP的Cookie、Session和跟Laravel相关的几点了解
这两天通过对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相关的几点了解的更多相关文章
- node学习笔记9——cookie,session相关操作
下面讲的都是基Express及相关的包.所以在实践本篇文章之前,通过npm安装好Express, cookie-parser, cookie-session这三个安装包. 先简单说一下,如何用Expr ...
- session和cookie的区别和联系详解,Cookie Session相关看这篇就够了。
本文转自:91博客:原文地址:http://www.9191boke.com/199015867.html 有一朋友做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么 ...
- python Cookie Session 相关用法
Cookie一.前言1.http协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响 应情况直接影响,也不会直接影响后面的请 ...
- Cookie Session和自定义分页
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- 【转】Cookie/Session机制详解
Cookie/Session机制详解 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息 ...
- python自动化开发-[第十九天]-分页,cookie,session
今日概要: 1.cookie和session 2.csrf 跨站请求伪造 3.自定义分页 一.上节回顾: http请求的本质: - Http请求本质 浏览器(socket客户端): 2. socket ...
- day70 cookie & session 前后端交互分页显示
本文转载自qimi博客,cnblog.liwenzhou.com 概要: 我们的cookie是保存在浏览器中的键值对 为什么要有cookie? 我们在访问浏览器的时候,千万个人访问同一个页面,我们只要 ...
- 聚合和分组F,Q和事物,cookie,session
聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典. 键的名称是聚合值的标识符,值是计算出来的聚合值.键的名称是按照字段和聚合函数的名称自动生成出 ...
- node.js cookie session使用教程
众所周知,HTTP 是一个无状态协议,所以客户端每次发出请求时,下一次请求无法得知上一次请求所包含的状态数据,如何能把一个用户的状态数据关联起来呢? cookie 首先产生了 cookie 这门技术来 ...
随机推荐
- OpenGL--------纹理处理
我们可以将像素数据按照矩形进行缩小和放大,但是还不足以满足我们的要求.例如要将一幅世界地图绘制到一个球体表面,只使用glPixelZoom这样的函数来进行缩放显然是不够的.OpenGL纹理映射功能支持 ...
- UVA 11027 - Palindromic Permutation
题目意思为解码字符串,要输出第n个回文字符串,因为对称关系,前一半确定了,后一半也就跟着确定了,所以n其实就是前一半字符串的编码,还要减去1,直接解码出来再复制给后半即可 #include<cs ...
- php 图片压缩处理
<?php require dirname(__FILE__).'/../includes/common.inc.php'; $_clean = array(); $_info = array( ...
- HttpSession详解
HttpSession详解 session的机制 http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现会话跟踪呢?s ...
- cell reuse & disposebag
For my project I've made base cell class TableViewCell: UITableViewCell { private(set) var disposeBa ...
- selenium和pythond的区别
selenium和pythond的区别 天宇6169 | 浏览 137 次 2016-03-18 10:25 2016-03-18 12:24 最佳答案 selenium ide是用来录制的!大概 ...
- GameUnity 2.0 文档(三) 纸片人八方向
DirectSprite类 有别于 上篇文档出现的 AnimationSprite类 (从头播放到尾) 这个类根据 path的图,如果是 8*8 64个图 八方向,可以设置长宽和 角度 角度 代表 8 ...
- java 接口参数
Example6_5.java interface SpeakHello { void speakHello(); } class Chinese implements SpeakHello { pu ...
- 学习笔记——工厂模式Factory
Product是我们所需要获得的对象,一般的使用中,我们直接通过new获得新对象. 当需要大量获得对象时,每一次都new会很麻烦. <真菌世界>游戏中,一个星球上有很多树,一棵树会不断生成 ...
- zencart url特殊字符处理
1. 支持 在后台的seo url 将Outputw3c 改为false 2.删除特殊字符 这对于在少量的zen cart网站上处理少量的特殊字符可能还适用,实际上我们经常在导入产品数据时或者或少会带 ...