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 相关文章推荐
简单的过滤字符串中的HTML标记
Dec 25 PHP
比较全的PHP 会话(session 时间设定)使用入门代码
Jun 05 PHP
PHP输入流php://input介绍
Sep 18 PHP
PHP代码优化的53个细节
Mar 03 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
跟我学Laravel之快速入门
Oct 15 PHP
php自定义apk安装包实例
Oct 20 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 PHP
详解php几行代码实现CSV格式文件输出
Jul 01 PHP
PHP sdk实现在线打包代码示例
Dec 09 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
swfupload 多文件上传实现代码
2008/08/27 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
2012/12/04 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
vant中的toast轻提示实现代码
2020/11/04 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
python绘制热力图heatmap
2020/03/23 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
市场营销专业个人求职信范文
2013/12/14 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
化工工艺设计求职信
2014/06/25 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
2015年林业工作总结
2015/05/14 职场文书
《法国号》教学反思
2016/02/22 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang