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 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
php调用C代码的实现方法
Mar 11 PHP
php中adodbzip类实例
Dec 08 PHP
php实现的简单日志写入函数
Mar 31 PHP
php无序树实现方法
Jul 28 PHP
php去除二维数组的重复项方法
Nov 03 PHP
CI配置多数据库访问的方法
Mar 28 PHP
CI框架表单验证实例详解
Nov 21 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
PHP+Ajax简单get验证操作示例
Mar 02 PHP
PHP实现cookie跨域session共享的方法分析
Aug 23 PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 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
数字转英文
2006/12/06 PHP
PHP 中执行排序与 MySQL 中排序
2009/04/21 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
thinkphp3.2.3 分页代码分享
2016/07/28 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
javascript 读取图片文件的大小
2009/06/25 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
jQuery居中元素scrollleft计算方法示例
2017/01/16 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
H5上传本地图片并预览功能
2017/05/08 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
python中操作文件的模块的方法总结
2021/02/04 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
客户表扬信范文
2014/01/10 职场文书
学校班班通实施方案
2014/06/11 职场文书
中班上学期个人总结
2015/02/12 职场文书
初中美术教学反思
2016/02/17 职场文书