php setcookie(name, value, expires, path, domain, secure) 参数详解

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的域名设置。

时间: 2024-10-03 21:15:26

php setcookie(name, value, expires, path, domain, secure) 参数详解的相关文章

cookie的secure属性详解

  1. 先在console1中输入以下代码 document.cookie = "name=EX;expires=60*24*7;secure=true"; 接着,打开Resources,就可以看到cookie中已经记录了相应的字段 2. 在console2中进行同样的操作,这时去看看http协议下百度页面的Resources,就会发现,name字段并没有上传到服务器 3. 那如果我把secure设为false呢? 以本文百度这个为例,设为false的结果就是无论你在哪个协议下的百度

cookie的secure属性详解_cookie

今天做项目的时候涉及到了cookie跨域传递的问题,也因此了解了cookie的一个属性--secure. 顾名思义,这个属性就是用来保证cookie的安全的. 当secure属性设置为true时,cookie只有在https协议下才能上传到服务器,而在http协议下是没法上传的,所以也不会被窃听. 简单实践一下,chrome浏览器打开https://www.baidu.com和http://www.baidu.com,分别打开控制台(下文称https页面中的控制台为console1,http的成

php setcookie详解用法

cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 php教程,您能够创建并取回 cookie 的值. 如何创建 cookie? setcookie() 函数用于设置 cookie. 注释:setcookie() 函数必须位于 <html> 标签之前. 语法 setcookie(name, value, expire, path, domain);例子 在下面的例子中,我们将创建名为 "

cookie中的path与domain属性详解

 本篇文章主要是对cookie中的path与domain属性进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助   1.domain表示的是cookie所在的域,默认为请求的地址,如网址为www.jb51.net/test/test.aspx,那么domain默认为www.jb51.net.而跨域访问,如域A为t1.test.com,域B为t2.test.com,那么在域A生产一个令域A和域B都能访问的cookie就要将该cookie的domain设置为.test.com:如果要

cookie中的path与domain属性详解_jquery

1.domain表示的是cookie所在的域,默认为请求的地址,如网址为www.jb51.net/test/test.aspx,那么domain默认为www.jb51.net.而跨域访问,如域A为t1.test.com,域B为t2.test.com,那么在域A生产一个令域A和域B都能访问的cookie就要将该cookie的domain设置为.test.com:如果要在域A生产一个令域A不能访问而域B能访问的cookie就要将该cookie的domain设置为t2.test.com. 2.path

浏览器缓存详解:expires,cache-control,last-modified,etag详细说明

最近在对CDN进行优化,对浏览器缓存深入研究了一下,记录一下,方便后来者 画了一个草图: 每个状态的详细说明如下: 1.Last-Modified 在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记(HttpReponse Header)此文件在服务期端最后被修改的时间,格式类似这样: Last-Modified:Tue, 24 Feb 2009 08:01:04 GMT 客户端第二次请求此URL时,根据HTTP协议

setcookie中Cannot modify header information-headers already sent by错误的解决方法详解_php技巧

复制代码 代码如下: <?php   setcookie("username","bu",time()+3600);   echo "aaaaa";?> 运行有警告Warning: Cannot modify header information - headers already sent by  下面是别人建议 方法一:在PHP里Cookie的使用是有一些限制的.1.使用setcookie必须在<html>标签之前2.

SQL SERVER FOR XML PATH 行转列实例详解

FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主. 一.FOR XML PATH 简单介绍 那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下:        接下来我们来看应用FOR XML PATH的查询结果语句如下:  代码如下 复制代码 SELECT * FROM @hob

WPF中图形表示语法详解(Path之Data属性语法)

原文 http://blog.csdn.net/johnsuna/article/details/1885597 老规矩,看图说话. 先看显示效果:(图1) XAML(代码A):<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >  <Canvas