php setcookie(name, value, expires, path, domain, secure) 参数详解


Posted in PHP onJune 28, 2013

setcookie() 定义一个和其余的 HTTP 标头一起发送的 cookie。和其它标头一样,cookie 必须在脚本的任何其它输出之前发送(这是协议限制)。这需要将本函数的调用放到任何输出之前,包括 <html> 和 <head> 标签以及任何空格。如果在调用 setcookie() 之前有任何输出,本函数将失败并返回 FALSE。如果 setcookie() 函数成功运行,将返回 TRUE。这并不说明用户是否接受了 cookie。
函数定义:
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )
setcookie() 参数详解

参数  说明 举例
name cookie的名字 使用 $_COOKIE['cookiename'] 调用名为 cookiename 的 cookie。
value cookie的值,存放在客户端,不要存放敏感数据 假定 name 是 'cookiename',可以通过$_COOKIE['cookiename'] 取得其值。
expire Cookie 过期的时间。这是个 Unix 时间戳,即从 Unix 纪元开始的秒数。 换而言之,通常用 time() 函数再加上秒数来设定 cookie 的失效期。 或者用mktime()来实现。 time()+60*60*24*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 子域内有效。 细节见Cookie 规范中的 tail matching。
secure 指明 cookie 是否仅通过安全的 HTTPS 连接传送。 当设成 TRUE 时,cookie 仅在安全的连接中被设置。默认值为FALSE。 0 或 1

例子 1. setcookie() 发送例子
$value = 'something from somewhere';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value,time()+3600);  /* expire in 1 hour */
setcookie("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1); 

注意 cookie 中值的部分在发送的时候会被自动用 urlencode 编码并在接收到的时候被自动解码并把值赋给与自己同名的 cookie 变量。如果不想这样并且在使用 PHP 5 的话,可以用 setrawcookie() 来代替。下面这个简单的例子可以得到刚才所设定的 cookie 的值:
<?php
// 输出单独的 cookie
echo $_COOKIE["TestCookie"];
echo $HTTP_COOKIE_VARS["TestCookie"];
// 另一个调试的方法就是输出所有的 cookie
print_r($_COOKIE);
?>

要删除 cookie 需要确保它的失效期是在过去,才能触发浏览器的删除机制。下面的例子说明了如何删除刚才设置的 cookie:
例子 2. setcookie() 删除例子
// 将过期时间设为一小时前
setcookie("TestCookie", "", time() - 3600);
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1); 

也可以通过在 cookie 名称中使用数组符号来设定数组 cookie,可以设定多个 cookie 作为数组单元,在脚本提取 cookie 时所有的值都放在一个数组种:
例子 3. setcookie() 中使用数组的例子
<?php
// 设定 cookie
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");
// 刷新页面后,显示出来
if (isset($_COOKIE['cookie'])) {
    foreach ($_COOKIE['cookie'] as $name => $value) {
        echo "$name : $value <br />\n";
    }
}
?>

上例将输出:
three : cookiethree
two : cookietwo
one : cookieone

总结:cookie的基本使用不难,这篇文章记录的重点主要是掌握path的路径设置和domain的域名设置。

PHP 相关文章推荐
php获取从百度搜索进入网站的关键词的详细代码
Jan 08 PHP
PHP zip扩展Linux下安装过程分享
May 05 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 PHP
php几个预定义变量$_SERVER用法小结
Nov 07 PHP
thinkphp框架下实现登录、注册、找回密码功能
Apr 06 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
PHP常用文件操作函数和简单实例分析
Jun 03 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
Jun 28 #PHP
使用PHP实现Mysql读写分离
Jun 28 #PHP
win7下memCache的安装过程(具体操作步骤)
Jun 28 #PHP
浅析memcache启动以及telnet命令详解
Jun 28 #PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 #PHP
深入apache配置文件httpd.conf的部分参数说明
Jun 28 #PHP
浅析php变量修饰符static的使用
Jun 28 #PHP
You might like
PHP树的代码,可以嵌套任意层
2006/10/09 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
Node.js文件操作详解
2014/08/16 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
ElementUI Tag组件实现多标签生成的方法示例
2019/07/08 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
详解python分布式进程
2018/10/08 Python
Django中使用Celery的方法示例
2018/11/29 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
挂职思想汇报
2013/12/31 职场文书
大学生作弊检讨书
2014/02/19 职场文书
三方合作协议书范本
2014/04/18 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
与美同行演讲稿
2014/09/13 职场文书
老公保证书
2015/01/17 职场文书
承诺书范本
2015/01/21 职场文书
新闻报道稿范文
2015/07/23 职场文书
详解python网络进程
2021/06/15 Python
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript