`
dennisbing
  • 浏览: 159111 次
  • 性别: 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的使用方法

    本篇文章将详细探讨如何使用jQuery结合cookies.js插件来管理Cookies。 首先,我们需要了解jQuery库,它是一个广泛使用的JavaScript库,简化了HTML文档遍历、事件处理、动画和Ajax交互等任务。在我们的场景中,...

    前端cookies安全视频

    "前端cookies安全视频"聚焦于如何安全地使用这些小型文本文件,确保Web应用程序的数据安全性和用户隐私。以下是对视频内容的详细解释: 一、Cookies的定义与用途 Cookies是由服务器发送到用户的浏览器并存储在本地...

    delphi 使用cookies

    以下是对"delphi 使用cookies"这一主题的详细阐述: 一、理解Cookies Cookies的主要用途包括会话管理、个性化设置、网站统计等。每个Cookie包含一个名称、值、过期时间、路径、域和安全属性。在Delphi中,我们可以...

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

    在这篇文章中,详细介绍了在Scrapy中设置应用Cookies的三种方法,以下为具体的知识点总结: ### 第一种:在settings.py文件中设置Cookies 在Scrapy框架中,可以通过修改settings.py文件中的COOKIES_ENABLED选项来...

    IE COOKIES查看工具及说明教程

    在互联网浏览过程中,网站为了记住用户的信息和偏好,通常会使用一种名为"Cookies"的技术。这些小型文本文件存储在用户的计算机上,为用户提供个性化的体验,如自动登录、保存购物车信息等。然而,了解和管理这些...

    如何打开网页的cookies

    本篇文章将详细介绍如何在IE浏览器中开启对网页Cookies的接受,以便能够正常浏览那些依赖Cookies的网站。 首先,你需要知道为什么有时会遇到无法打开Cookies的情况。这通常是因为浏览器的隐私设置过高,或者用户已...

    php Cookies 操作控制类

    下面将详细阐述这个类的主要功能及其用法。 1. **保存Cookies数据**: 类提供了方法来设置Cookies,允许开发者将数据(如字符串、数组或对象)存储到用户的浏览器中。通常,这个过程涉及`setcookie()`函数的使用,...

    使用phpMyAdmin 时,"必须启用 Cookies 才能登录",问题的解决

    在使用phpMyAdmin时,有时会遇到一个常见的问题,即登录页面反复提示“必须启用Cookies才能登录”。这通常是由于浏览器的Cookie设置不正确或者phpMyAdmin的配置文件没有正确配置导致的。以下是一些详细的解决步骤和...

    C# 清理 Cookies 文件.txt

    本篇文章将详细介绍如何使用C#语言编写程序来实现清理Cookies文件的功能。 #### 二、基础知识 ##### 2.1 C#简介 C#(发音为“C Sharp”)是由微软公司开发的一种面向对象的、类型安全的编程语言。它结合了C++的...

    C#+Cookies防止重复操作代码

    本篇将详细解析如何利用C#和Cookies来实现这一功能。 首先,我们来看标题中的核心概念:C#防止重复操作和C#+Cookies防止重复操作。在C#的Web应用中,通常使用ASP.NET框架。当用户进行投票、点赞或评论等操作时,...

    最近浏览记录(Cookies)

    现在,我们来详细探讨Cookies的工作原理以及如何实现类似迅雷看看的浏览记录功能。 **1. Cookies的基本概念** Cookies是Web应用程序用来跟踪用户状态的一种机制。当用户访问一个网站时,服务器可以将一个或多个...

    IE Cookies查看工具

    1. `iecv.chm`:这是一个帮助文件,通常包含了软件的详细使用指南和技术支持信息。 2. `ads.txt`:这个文件可能包含了广告商的声明或工具的广告服务信息。 总的来说,IE Cookies查看工具是网络用户特别是IT专业人士...

    cookies 查看器 ie friefox chrome

    5. **查看和管理Cookies**:通过浏览器的设置菜单,用户通常可以直接查看和管理cookies,但使用专门的cookies查看器可以提供更详细的控制和便捷的操作。 6. **隐私设置**:浏览器通常允许用户调整对cookies的接受...

    Cookies 查看器

    本文将详细讲解Cookies的基本概念,以及如何使用“Cookies 查看器”这一工具来查看和管理电脑中的Cookies。 **一、Cookies基础知识** 1. **定义**:Cookies是由网站服务器发送到用户浏览器并存储在本地的一小片...

    java+http+操作cookies源码整理

    "下载及使用说明.txt"文件应包含详细的步骤和注意事项,帮助你理解和使用这些源码。 通过学习和实践这些Java HTTP Cookies操作,你将能够更好地处理用户会话和状态管理,为Web应用程序提供更加流畅的用户体验。记住...

    网页登录记住用户名密码登录时间的cookies的做法

    本文将详细介绍使用cookies记住用户名密码登录时间的做法。 一、 cookies的概念 Cookies是Web服务器将数据存储在客户端浏览器中的一种方式。它们通常用于存储用户的个人偏好、浏览记录、登录信息等。当用户访问...

    Cookies抓取工具

    本文将深入探讨“Cookies抓取工具”的相关知识点,以及如何使用这款工具来获取Cookies。 首先,我们需要理解Cookies的基本概念。Cookies是由服务器发送到用户的浏览器并存储在本地的一小块数据,它主要用于记录用户...

    Cookies测试工具

    "ReadMe.txt"文件通常包含了软件的使用指南、版本信息、许可协议等内容,用户在使用前应详细阅读,以确保正确和合法地使用工具。 总的来说,"Cookies测试工具"通过提供强大的Cookies管理能力,帮助开发者和测试人员...

    vb删除IE缓存及cookies源码

    以下是一个详细的VB源码实现这一功能的知识点介绍: 1. **理解IE缓存和Cookies** - **IE缓存**:当用户访问网站时,IE会自动下载网页的图片、脚本和其他资源,并存储在本地的临时互联网文件夹中,以加快后续访问的...

    龙腾码支付获取Cookies浏览器插件EditThisCookie.zip

    【标题解析】:“龙腾码支付获取Cookies浏览器插件EditThisCookie.zip”这个标题提到了“龙腾码支付”和“EditThisCookie”两个关键点...而对于普通用户,了解如何使用Cookies管理工具也是提升网络安全意识的重要一步。

Global site tag (gtag.js) - Google Analytics