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('PHPSESSID', session_id(),time()+3600);
--
2018/04/21 PHP 中的Session和Cookie知识总结的更多相关文章
- MVC、控件、一般处理程序中的session and cookie
Mvc中: session: if (!string .IsNullOrEmpty(find)) //设置 Session["oip"] = "无锡"; Vie ...
- JAVA中的Session和Cookie【转】
一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于才服务器端保持状态的 ...
- Django中的session和cookie及分页设置
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- Django中的Session与Cookie
1.相同与不同 Cookie和Session都是为了记录用户相关信息的方式, 最大的区别就是Cookie在客户端记录而Session在服务端记录内容. 2.Cookie和Session之间的联系的建立 ...
- javaWeb中的session和cookie
Cookie Cookie 是浏览器提供的一种技术,通过服务器的程序能将一些只须保存在客户端,或者 在客户端进行处理的数据,放在本地的计算机上,不需要通过网络传输,因而提高网页处理的效率,并且能够减少 ...
- express中 使用session与cookie
1.express如何使用session与cookie : https://www.jianshu.com/p/1839e482274e 或 https://www.cnblogs.com/chy ...
- ASP.NET MVC 中解决Session,Cookie等依赖的方式
原文:https://blog.csdn.net/mzl87/article/details/90580869 本文将分别介绍在MVC中使用Filter和Model Binding两种方式来说明如何解 ...
- Django中的Session和cookie
Session和cookie 参考文献:https://www.cnblogs.com/wupeiqi/articles/5246483.html 1.问题引入 1.1 cookie是什么? 保存在客 ...
- TP中的session和cookie
session:1.session('name','value'); //设置session2.$value = session('name'); // 获取所有的session 3.2.2版本新 ...
随机推荐
- Windows 2012 R2 安装Nessus
1.nessus官网注册 注册地址:https://www.tenable.com/products/nessus-home Name字段随意,邮箱需要填写自己的,方便接受注册码 2.注册后,登录邮箱 ...
- 【DVWA】Web漏洞实战之File Upload
File Upload File Upload,即文件上传漏洞,一般的上传漏洞可能是未验证上传后缀 或者是验证上传后缀被bypass 或者是上传的文件验证了上传后缀但是文件名不重命名. LOW 直接上 ...
- Explaining Delegates in C# - Part 6 (Asynchronous Callback - Way 3)
By now, I have shown the following usages of delegates... Callback and Multicast delegatesEventsOne ...
- Unity Shader 获取模型空间坐标
CGPROGRAM // Physically based Standard lighting model, and enable shadows on all light types #pragma ...
- Kafka producer拦截器(interceptor)
Producer拦截器(interceptor)是个相当新的功能,它和consumer端interceptor是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑. 对于 ...
- 正则表达式(overall)
令自己想爱但深爱不上的正则表达式~ 阅读网站:http://c.biancheng.net/cpp/html/1402.html 为什么使用正则表达式? ①防止SQL注入:尤其对于网站,安全是至关重要 ...
- lua中的字符串操作(模式匹配)
(一). 模式匹配函数在string库中功能最强大的函数是:string.find(字符串查找)string.gsub(全局字符串替换)string.gfind(全局字符串查找)string.gmat ...
- windows下nodejs与coffeeScript环境搭建
[本文档摘抄自网上资料] 安装NodeJS和CoffeeScript方法 首先安装Node(因为nodeJs是服务器端javascript运行环境),到http://nodejs.org/下载对应格式 ...
- 编写java的时候出现“编码GBK的不可映射字符”
今天在编写文件的时候,使用 javac ***.java 但是java文件里面会出现一些中文的信息,So:会报错 方法: 加参数-encoding UTF-8 例如:javac -encodig UT ...
- Jquery 网页转换为图片
/* html2canvas 0.5.0-alpha1 <http://html2canvas.hertzen.com> Copyright (c) 2015 Niklas von Her ...