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+javascript模拟Matrix画面
Oct 09 PHP
PHP入门学习的几个不错的实例代码
Jul 13 PHP
php将会员数据导入到ucenter的代码
Jul 18 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
学习php分页代码实例
Oct 24 PHP
PHP的preg_match匹配字符串长度问题解决方法
May 03 PHP
php字符串函数学习之substr()
Mar 27 PHP
PHP人民币金额转大写实例代码
Oct 02 PHP
thinkPHP查询方式小结
Jan 09 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
PHP中的异常处理机制深入讲解
Nov 10 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/11/25 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
JScript的条件编译
2007/05/29 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
Python实现模拟时钟代码推荐
2015/11/08 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
在TensorFlow中屏蔽warning的方式
2020/02/04 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS