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 输出双引号&quot;与单引号'的方法
May 09 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
Jun 23 PHP
使用PHP实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
Oct 09 PHP
解决ajax+php中文乱码的方法详解
Jun 09 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
为何说PHP引用是个坑,要慎用
Apr 02 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 27 PHP
php在linux环境中如何使用redis详解
Dec 15 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
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
学习ExtJS table布局
2009/10/08 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
用Python的Flask框架结合MySQL写一个内存监控程序
2015/11/07 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
外企测试工程师面试题
2015/02/01 面试题
前台文员职责范本
2014/03/07 职场文书
学雷锋标语
2014/06/25 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
医院党建工作总结2015
2015/05/26 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书
二婚主持词
2015/06/30 职场文书
公司酒会主持词
2015/07/02 职场文书
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android