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 函数语法介绍一
Jun 14 PHP
PHPWind 发帖回帖Api PHP版打包下载
Feb 08 PHP
php代码运行时间查看类代码分享
Aug 06 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
php sybase_fetch_array使用方法
Apr 15 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
Dec 10 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
YII框架中搜索分页jQuery写法详解
Dec 19 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
Nov 20 PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 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/11/16 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
php生成数字字母的验证码图片
2015/07/14 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
Javascript 面向对象 命名空间
2010/05/13 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
python利用socketserver实现并发套接字功能
2018/01/26 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
python利用线程实现多任务
2020/09/18 Python
Pyside2中嵌入Matplotlib的绘图的实现
2021/02/22 Python
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
实习单位接收函
2014/01/11 职场文书
新员工入职感言
2014/02/01 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
食堂卫生管理制度
2015/08/04 职场文书
利用python做表格数据处理
2021/04/13 Python