zoukankan      html  css  js  c++  java
  • Cookie 的运行机制以及常用规则

     一   setCookie

                bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )

    参数说明举例
    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

    01

      

        1、name 和 value 的值均为简单的字符串类型。  

             

                所以下面均为错误写法

                  $a=array(1,2)   ; setcookie('num',$a);

                      $b=new (对象)  ; setcookie('obj',$b);

                     Warning: setcookie() expects parameter 2 to be string(第二个参数为string)

                          (但是你却可以写上bool的 true, setcookie('num',true);    结果等同于  setcookie('num',1);但是极少这样使用。)

          2、cookie的第三个参数,生存时间。

              setcookie('host','www.xyulife.com',time()+3600);  

              上面这段代码是最基本的cookie代码,让我给大家解释一下。

                当用户运行此文件时,执行setcookie函数。生成一个以键为'host' 值为'www.xyulife.com' 生存时间为3600秒的cookie文件,

                此文件可供同域下的文件或者程序使用,3600秒之后此

            

             setcookie('host','www.xyulife.com');

                        浏览器不会生成cookie文件,浏览器关闭则cookie失效,在此期间cookie会在浏览器缓存供开发者使用。

        注意一个网站只会生成一个cookie文件,每个浏览器或不同的操作系统生存Cookie文件的地址有所不同,

        xp IE内核的地址为C:Documents and SettingsAdministratorCookies,

        至今我还未找到win7 firefox的cookie文件 ,网上说法很多,其中很多是有多所说的位置是缓存文件地址,并不是cookie文件地址,(如果谁找到了 麻烦留言告诉我)

       

        如果你在本地有俩个文件 example  1.php 和2.php

        分别写入 setcookie('a','aaa',time()+300)setcookie('b','aaa',time()+300)  

        那么客户端只会生成一个cookie文件 (针对一个浏览器),其它文件的Cookie操作会在这个Cookie文件的基础上进行修改增加或删除。

      

      The Three

        Cookie 的删除操作

        setcookie('name','',time()-200);

        setcookie('age','',time()-200);

        如果你觉得上述删除麻烦,想一次性删除。你可以这样:

        foreach($_COOKIE as $key => $val){

          setcookie($key,'',time()-200);//可以一次性删除所以cookie

        }

        当这个cookie文件的cookie信息全部被删除后,cookie文件将被清除。

        The Four

        Cookie 的运行机制  。

        现在又俩个文件,1.php 和2.php

        1.php 代码 

        setcookie('name','wc',time()+3600);

        2.php 代码

        if(isset($_COOKIE['name'])){

          echo $_COOKIE['name'];

        }

        我开始认为cookie的逻辑是这样的, 在1.php中设置了cookie,然后2.php想要取出cookie,所以2.php就去找cookie文件,并取出相对应的cookie。但是这种想法是错误的。

        实际上逻辑是这样:

            在1.php中设置了cookie,然后跳转的时候浏览器会在http 头 发送你所设置的cookie,并不是去cookie文件中去取,所以这样也就限制了cookie的大小和个数。

                                                                     如果上诉有错误,请留言指出。

  • 相关阅读:
    assert的使用
    网络性能测试工具iperf的注意事项
    sskykeygen + sshcopyid避免ssh/scp每次输入密码
    遗留系统维护的思考
    IList(T)转换DataSet
    可扩展性(Extensibility): 构建灵活系统的思考
    页面加一个"数据正在载入,请等待... Loading, please wait..."的提示
    优化JavaScript
    创业与老子的顺其自然
    实用正则表达式匹配和替换
  • 原文地址:https://www.cnblogs.com/Hebe0115/p/3561068.html
Copyright © 2011-2022 走看看