PHP 读写 COOKIE
1、 Cookie 介绍
在 PHP 中通过 setcookie()函数创建 Cookie。语法格式如下:
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string$domain [, bool $secure = false [, bool $httponly = false ]]]]]])
参数 |
说明 |
必填 |
举例 |
name |
cookie 的名字 |
是 |
使用 $_COOKIE['cookiename'] 调用名为 cookiename 的 cookie。 |
value |
cookie 的值,存放在客户端,不要存放敏感数据 |
是 |
假定 name 是‘cookiename’,可以通过 $_COOKIE[‘cookiename’] 取得其值。 |
expire |
Cookie 过期的时间。这是个 Unix 时间戳,即从 Unix 纪元开始的秒数。换而言之, 通常用 time() 函数再加上秒数来设定 cookie 的失效期。或者用 mktime()来实 现。 |
否 |
time( )+86400*30 将设定 cookie 30 天后失效。如果未设定,cookie 将会在会话结束后 (一般是浏览器关闭)失效。 |
path |
Cookie 在服务器端的有效路径。 |
否 |
如果该参数设为 ‘/‘的话, cookie 就在整个 domain 内有 效,如果设为 ‘/foo/‘, cookie 就只在 domain 下的 /foo/目录及其子目录内有效,例如 /foo/bar/。默认值为设定 cookie 的当前目录。 |
domain |
该 cookie 有效的域名。 |
否 |
要使 cookie 能在 如 example.com 域名下的所有子域都有效的话,该参数应该设 为 ‘.example.com’。虽然 . 并不必须的,但加上它会兼容更多的浏览器。如果该参数设为 www.example.com 的话,就 只在 www子域内有效。 |
secure |
指明 cookie 是否仅通过安全的 HTTPS 连 接传送。当设成 TRUE 时,cookie 仅在安 全的连接中被设置。默认值为 FALSE。 |
否 |
0 或 1 |
httponly |
设为 true 后,只能通过 http 访问, javascript 无法访问;防止 xss 读取 cookie;php5.2 以上版本已支持 HttpOnly 参数的设置,同样也支持全局的 HttpOnly 的 设置,在 php.ini 中, session.cookie_httponly=ture 来开启全局 的 Cookie 的 HttpOnly 属性 |
否 |
setcookie(“abc”, “test”,NULL, NULL, NULL, NULL, TRUE) |
2、创建cookie
创建名称为 name 的 cookie,值为 root
└─# vim cookie1.php
插入如下代码:
<?php
setcookie('name','root'); //设置名称为 name 的 cookie,值为 root
setcookie('cwillchris','will',time()+3600); //设置名称为 cwillchris 的 cookie 的值为will,有效时间为 3600 秒
echo date('Y-m-d H:i:s'); //输出当前时间
?>
浏览器访问http://192.168.98.30/cookie1.php,按F12,选择Storage,就可以看到cookie信息
注意:从图中可以看到 domain 没有设置默认为 当前站点域名,path 默认为 / ,也就是这个 cookie 在整个站点内是有效的,第一个 cookie 没有设置过期时间 expire,默认为 Session ,说明当 浏览器关掉后,会失效。第二个 cookie 过期时间为访问页面时开始 1 个小时候失效。
3、读取cookie
在 PHP 中可以直接通过超级全局数组$_COOKIE[]来读取浏览器端的 Cookie 值。
读取名为name的cookie
创建文件cookie2.php
─# vim cookie2.php
插入如下代码
<?php
echo $_COOKIE['name']; //读取名称为 name 的 cookie 的值并输出到当前页面
echo "<br/>"; //输出换行,为了显示更明显些,将两个 cookie 的值用 换行间隔
echo $_COOKIE['cwillchris']; //读取名称为 xuegod 的 cookie 的值并输出到当前页面
?>
浏览器访问http://192.168.98.30/cookie2.php, 显示出例 1 中创建的两个 cookie 的值
关闭浏览器,重新打开访问这个链接, 此时只显示名称为 cwillchris的 cookie 的值,因为第一个 cookie 没有设置过期时间,关闭浏览器 后会失效。而第二个 cookie 设置的过期时间为 1 个小时。
4、删除cookie
当 Cookie 被创建后,如果没有设置它的失效时间,其 Cookie 文件会在关闭浏览器时被自动删除。 如果要在关闭浏览器之前删除 Cookie 文件,方法有两种:一种是使用 setcookie()函数删除,另一种是 在浏览器中手动删除 Cookie。下面分别进行介绍
(1) 使用 setcookie()函数删除 Cookie
删除 Cookie 和创建 Cookie 的方式基本类似,删除 Cookie 也使用 setcookie()函数。删除 Cookie 只需要将 setcookie()函数中的第二个参数设置为空值,将第 3 个参数 Cookie 的过期时间设置 为小于系统的当前时间即可。
例如: 将 Cookie 的过期时间设置为当前时间减 1 秒,代码如下
setcookie("name", "", time()-1);
(2)在浏览器中手动删除 Cookie 在使用 Cookie 时,Cookie 自动生成一个文本文件存储在 IE 浏览器的 Cookies 临时文件夹中。在 浏览器中删除 Cookie 文件是非常便捷的方法
实战:删除还没有失效的cookie
浏览器访问http://192.168.98.30/cookie1.php,得到两个cookie
然后浏览器访问浏览器访问http://192.168.98.30/cookie2.php,可以看到两个cookie的值
(1) 使用 setcookie()函数删除 Cookie
创建文件 delcookie.php
└─# vim delcookie.php
插入如下代码
<?php
setcookie('cwillchris',null,time()-1); //删除名为cwillchris的值
?>
浏览器访问浏览器访问http://192.168.98.30/delcookie.php
然后再次刷新 192.168.98.30/cookie2.php
可见名称为 cwillchris,值为 xueshen 的 cookie 不显示了,已经被删除了
(2) 在浏览器中手动删除 Cookie
浏览器访问http://192.168.98.30/cookie1.php,重新得到两个cookie
按F12,点击Storage,右击选中要删除的cookie,选择Delete ,就可以了
浏览器访问http://192.168.98.30/cookie2.php, 值为 cwillchris 的 cookie 不显示了,已经被删除
PHP 读写 COOKIE相关推荐
- Android如何使用读写cookie的方法
http://www.cnblogs.com/cosiray/archive/2012/06/25/2562117.html 可以使用SharedPreferences或者SQLite来保存用户信息 ...
- Java中如何读写cookie (二)
Java中删除cookie Cookie[] cookies=request.getCookies(); //cookies不为空,则清除 if(cookies!=nu ...
- cookie java 写入_JAVA中如何读写COOKIE
Java中删除cookie Cookie[] cookies=request.getCookies();//cookies不为空,则清除 if(cookies!=null) { String valu ...
- Jsp和Javascript读写cookie,cookie的path设置,jsp解码cookie值
cookie的基础知识就不介绍了,自己去百度. 一.jsp读写cookie jsp写cookie的代码如下: Cookie cookie1 = new Cookie("historyCity ...
- JavaScript读写Cookie
Cookie作用 Cookie是一些name=value对数据,这些数据可以由浏览器写入用户的硬盘,也可以由浏览器从用户的硬盘读取.Cookie用来持久化记录用户的某些信息,如用户名和用户的喜好等等. ...
- ASP.NET_读写Cookie
Cookie (HttpCookie的实例)提供了一种在 Web 应用程序中存储用户特定信息的方法.例如,当用户访问您的站点时,您可以使用 Cookie 存储用户首选项或其他信息.当该用户再次访问 ...
- js来读写cookie操作
因为之前公司的项目前后端是在一起的,因为要用vue来重构之前的项目.所以token签名要作为一个参数传递到后台.所以就遇到两个问题,1 token的保存和获取的问题. 2 token 判断.判断用户是 ...
- jquery读写cookie
jquery cookie需要脚本文件如下: jQuery.cookie = function(name, value, options) { if (typeof value != 'undefin ...
- 【JS】跨域问题读写cookie的解决办法
场景描述: 跨域Cookie共享:访问A站点时已经登录从而保存姓名.头像等基本信息,这时访问该公司的B站点时就自然而然的能显示出这些基本信息,也就是实现信息共享(在银联体系中A银行办理的卡也能在B银行 ...
- 跨域读写Cookie
原文链接 Cookie作用域 Cookie 在二级域名下是可以共享的,如www.a.com 和m.a.com 他们的Cookie 是可以共享的,这也是很多单点登录利用Cookie实现的原理,但是很多站 ...
最新文章
- 从冬奥会开幕式谈起,AI的艺术造诣如何?
- C++ STL之map常用指令
- Linux脚本中$#、$0、$1、$@、$*、$$、$?
- HDU - 4388 Stone Game II(博弈+思维)
- DbEntry在Vs2012里的配置
- MySQL(介绍,安装,密码操作,权限表)
- 目标检测发展路程(一)——Two stage
- 分享一下把pdftk的合并pdf功能添加到TC(Totalcommander)
- mysql in 子查询 效率慢 优化(转)
- ★★停止动画和停止所有动画$(selector).stop() 详解
- Java计划任务:ScheduledThreadPoolExecutor
- html5制作前端优势,HTML5前端开发原来有这么多优势!
- matlab 相位谱是直线,matlab幅度谱和相位谱
- oracle 落落是谁,落落是老虎妖精吗?落落的父母是什么身份?
- YC出品的创业第一课:How to start a startup
- 第7章第27节:三图排版:三张图片交错对齐排列 [PowerPoint精美幻灯片实战教程]
- Zookeeper:Zookeeper的主从选举机制
- 这个 Spring 循环依赖的坑,90% 以上的人都不知道
- 知乎 mac apfs_APFS,Mac OS Extended(HFS +)和ExFAT之间有什么区别?
- TCL雷鸟电视卸载内置应用
热门文章
- Vue前端框架选型论证,字节跳动高级java开发面试
- 状态模式,懂你的另一半
- 必应壁纸php,自动下载每日必应壁纸到指定文件夹php源码
- vs项目筛选器显示错乱、只显示部分文件
- linux(三剑客之sed) sed字符串替换命令详解
- 学习日志12:DoS技术及工具总结
- 防火墙 | DDos攻击防范技术
- Mybatis 报错Mapper method ‘xxx‘ has an unsupported return type
- PID到底是个啥?来给你讲个故事
- Excel 填充间格空白单元格与最上临近非空单元格值相同