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 相关文章推荐
教你如何把一篇文章按要求分段
Oct 09 PHP
用PHP和ACCESS写聊天室(六)
Oct 09 PHP
php include加载文件两种方式效率比较
Aug 08 PHP
php设计模式 Mediator (中介者模式)
Jun 26 PHP
php使用sql数据库 获取字段问题介绍
Aug 12 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
May 12 PHP
php图片的二进制转换实现方法
Dec 15 PHP
php实现简易聊天室应用代码
Sep 23 PHP
php实现的递归提成方案实例
Nov 14 PHP
Laravel学习教程之model validation的使用示例
Oct 23 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 15 PHP
浅谈PHP7中的一些小技巧
May 29 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如何解决无法上传大于8M的文件问题
2014/03/10 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
js DOM模型操作
2009/12/28 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
基于jquery的图片懒加载js
2010/06/30 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
2017/02/08 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
pandas Dataframe行列读取的实例
2018/06/08 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
在Python中使用Neo4j的方法
2019/03/14 Python
python的help函数如何使用
2020/06/11 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
大学生个人简历自我评价
2013/11/16 职场文书
《威尼斯的小艇》教学反思
2014/02/17 职场文书
给校长的一封建议书
2014/03/12 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
公民授权委托书
2014/10/15 职场文书
2014年人事部工作总结
2014/12/03 职场文书
党员年度个人总结
2015/02/14 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python