`
dennisbing
  • 浏览: 152535 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

cookies的详细使用

    博客分类:
  • PHP
 
阅读更多

  今天使用setcookie("prefix", $sProfix, time() + $iExpire, "/", $sDomain),结果一直写不进去,灰常上火啊,巾帼一番查找,发现最后的$sDomain设置的有问题,没有设置到但前的6uu.local.com上,结果导致cookies在域名下根本就木有写进去,从而不可能使用.
       下面是cookies的详细使用方式:
setcookie -- 发送一个 cookie 信息
说明
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )

setcookie() 定义一个和其余的 HTTP 标头一起发送的 cookie。和其它标头一样,cookie 必须在脚本的任何其它输出之前发送(这是协议限制)。这需要将本函数的调用放到任何输出之前,包括 <html> 和 <head> 标签以及任何空格。如果在调用 setcookie() 之前有任何输出,本函数将失败并返回 FALSE。如果 setcookie() 函数成功运行,将返回 TRUE。这并不说明用户是否接受了 cookie。

     注: 自 PHP 4 起,可以用输出缓存来在调用本函数前输出内容,代价是把所有向浏览器的输出都缓存在服务器,直到下命令发送它们。可以在代码中使用 ob_start() 及 ob_end_flush() 来实现这样的功能,或者通过修改 php.ini 中的 output_buffering 配置选项来实现,也可以通过修改服务器配置文件来实现。

除了 name 外,其它所有参数都是可选的。可以用空字符串("")替换某参数以跳过该参数。因为参数 expire 是整型,不能用空字符串掉过,可以用零(0)来代替 。下面的表格对 setcookie() 的每一个参数都进行了解释。可以对照 Netscape cookie 规范以了解 setcookie() 的每一个参数的细节以及通过阅读 RFC 2965 了解 HTTP cookie 的工作方式。

表格 1. 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

当 cookie 被设置后,便可以在其它页面通过 $_COOKIE 或 $HTTP_COOKIE_VARS 数组取得其值。需要注意的是,autoglobals 的 $_COOKIE 形式适用于 PHP 4.1.0 或更高版本。而 $HTTP_COOKIE_VARS 则从 PHP 3 起就可以使用。Cookie 的值也会被保存到 $_REQUEST 数组中。

     注: 如果 PHP 的选项 register_globals 被设为 on 的话,cookie 的值仍然会被斌到变量内。在下面的例子中,$TestCookie 会被注册,但是仍然推荐使用 $_COOKIE 数组。

常见缺陷:

     *

       Cookies 不会在设置它的本页生效,要测试一个 cookie 是否被成功的设定,可以在其到期之前通过另外一个页面来访问其值。过期时间是通过参数 expire 来设置的。可以简单地使用 print_r($_COOKIE); 来调试现有的 cookies。
     *

       Cookie 必须用和设定时的同样的参数才能删除。如果其值一个空字符串,或者是 FALSE,并且其它的参数都和前一次调用 setcookie 时相同,那么所指定名称的 cookie 将会在远程客户端被删除。
     *

       由于把 cookie 的值设为 FALSE 会使客户端尝试删除这个 cookie,所以要在 cookie 上保存 TRUE 或 FALSE 时不应该直接使用 boolean 值,而应该用 0 来表示 FALSE,用 1 来表示 TRUE
     *

       可以把 cookie 的名称设置成一个数组,但是数组 cookie 中的每个元素的值将会被单独保存在用户的系统中。考虑使用 explode() 函数用多个名称和值设定一个 cookie。不推荐将 serialize() 用于此目的,因为它可能会导致一个安全漏洞。

在 PHP 3 中,在同一个 PHP 脚本中多次使用 setcookie() 来设置 cookie,将会按照倒序的方式来分别执行,如果想要在插入另外一个 cookie 之前删除一个 cookie,要把插入放到删除之前。自 PHP 4 起,多次调用 setcookie() 则是按照顺序来执行的。

下面一些例子说明了如何发送 cookie:

例子 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";
    }
}
?>

当然前面的文章提到过,cookies的长度是有限制的,在不同的浏览器下存的长度是有区别的.

分享到:
评论

相关推荐

    cookies的简介以及其使用

    cookies的简介以及其使用

    scrapy中如何设置应用cookies的方法(3种)

    主要介绍了scrapy中如何设置应用cookies的方法(3种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    COOKies详细解析

    深入讲解了cookie和session机制以及区别

    ASP Cookies操作的详细介绍与实例代码

    反过来,如果你希望把Cookie发送到客户机,就可以使用Response.cookie 1、ExpiresAbsolute属性 该属性可以赋一个日期,过了这个日期Cookie就不能再被使用了。通过给Expires属性赋一个过期的日期,就可以删除Cookie。...

    Django框架设置cookies与获取cookies操作详解

    主要介绍了Django框架设置cookies与获取cookies操作,结合实例形式详细分析了Django框架针对cookie操作的各种常见技巧与操作注意事项,需要的朋友可以参考下

    jquery操作cookies

    非常实用的一套jquery操作cookies,目前的浏览器均支持,代码附带详细的解说详解说明。很实用...

    软件测试之Jmeter(详细完整版)

    欢迎来到本文,将为您详细解读一个完整而深入的测试流程,涵盖使用教程、参数说明以及结果深度分析。我们以登录接口为例,深入探讨接口压力测试、数据库压力测试以及如何灵活运用cookies管理器。 **测试流程的全貌...

    在Spring Boot中如何使用Cookies详析

    主要给大家介绍了关于在Spring Boot中如何使用Cookies的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    如何使用jQuery操作Cookies方法解析

    主要介绍了如何使用jQuery操作Cookies方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Cookie、Session和Token三者的区别及使用

    测试的过程中,经常会有这样的疑惑,什么是Cookie,什么是Session什么是Token,三者的区别又是什么,又是怎么使用的呢,这个文档跟大家详细介绍下三者的区别与使用

    Python爬虫使用浏览器cookies:browsercookie过程解析

    主要介绍了Python爬虫使用浏览器cookies:browsercookie,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    用cookies实现闪电登录论坛方法

    导入和导出”将登录信息通过Cookies导出保存(傲游这个功能MS不能用),曾见过有人撰文说将“FALSE”空格后面的“10********”修改为“16********”可以将有效期增加至20年(在IE缓存中选择详细信息查看方式,在截止...

    js保存当前路径(cookies记录)

    就是在个人中心页面,该客户点击取消订单,提交到某个action,进行数据库的操作,将一张表中的字段值改变,然后重新返回到个人中心页面,只是那里的“取消”按钮变成了灰色的“已取消”就OK了,而在订单的详细页面,...

    cookie,jsp详细介绍

    cookie乱码对应办法,详细介绍Jsp中的Cookies

    PHP购物车类(二维数组COOKIES存取:附带实例car.php)

    但用起来还是有一定的将就。小弟水平有限,二维数组的理解不是很透彻。研究了三个小时终于弄明白如何读取并生成购物列表。表骂我。我只是为了让更多像我...附详细注释 文件 cart.class.php 购物车类(COOKIE+二维数组)

    解析php通过cookies获取远程网页的指定代码

    本篇文章是对php通过cookies获取远程网页的指定代码进行了详细的分析介绍,需要的朋友参考下

    简单博客程序-JavaWeb简单课设(含课程设计论文,含引文,含使用说明与修改说明)

    此Web应用程序基本功能详细分为如下几个部分说明: 1、页面设计方面 本程序主要分为五个页面,详细说明如下: ① 主页 实现与登录、注册页面的相互跳转,并可实现通过Cookies快速登录 ② 登录页面 实现登录功能,...

    ASP.net课件Application、Session和Cookie对象.ppt

    此课件超详细讲解了asp.net中的lication、Session和Cookie对象,帮你你拨开迷雾,走进那奇妙的原始深林……呵呵……超有用……

    在Vue中如何使用Cookie操作实例

    同样,这个Cookie的使用方法是我从公司的项目中抽出来的,为了能让大家看懂,我会尽量写详细点。废话少说,我们直接进入正题。 一、安装Cookie 在Vue2.0下,这个貌似已经不需要安装了。因为当你创建一个项目的时候...

Global site tag (gtag.js) - Google Analytics