注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

绿色圣光

~生活·自愚自乐~

 
 
 

日志

 
 

PHP 的COOKIE   

2009-06-18 05:32:40|  分类: 他山之石 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。
    PHP 在http 协议的头信息里发送cookie,因此  setcookie()     函数必须在其它信息被输出到浏览器
前调用,这和对  header()    函数的限制类似。

1.1 设置cookie:

   可以用 setcookie()或 setrawcookie()函数来设置 cookie。也可以通过向客户端直接发送http  头来
设置。
    1.1.1  使用 setcookie()函数设置cookie:
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure [, bool
httponly]]]]]] )
   name: cookie 变量名
   value: cookie 变量的值
   expire: 有效期结束的时间
   path: 有效目录
   domain: 有效域名,顶级域唯一
   secure: 如果值为 1,则cookie 只能在https 连接上有效,如果为默认值 0,则http 和 https 都可
以。
例子:

代码片段
   <?php
    $value = 'something from somewhere';

    setcookie("TestCookie", $value); /* 简单 cookie设置 */
    setcookie("TestCookie", $value, time()+3600); /* 有效期 1个小时 */
    setcookie("TestCookie", $value, time()+3600, "/~rasmus/",

    ".example.com", 1); /* 有效目录 /~rasmus,有效域名 example.com及其所有子域名
    */
    ?>

    设置多个 cookie  变量:setcookie('var[a]','value');  用数组来表示变量,但他的下标不用引号。这
样就可以用$_COOKIE[‘var’][‘a’]来读取该COOKIE 变量。

    1.1.2.  使用 header()设置cookie;
    header("Set-Cookie: name=$value[;path=$path[;domain=xxx.com[;...]]");
    后面的参数和上面列出 setcookie 函数的参数一样。
    比如:

代码片段 

    $value = 'something from somewhere';
   header("Set-Cookie:name=$value");

1.2 Cookie 的读取:

    直接用php  内置超级全局变量$_COOKIE 就可以读取浏览器端的cookie。
    上面例子中设置了cookie "TestCookie",现在我们来读取:

       代码片段
   print $_COOKIE['TestCookie'];

    COOKIE 是不是被输出了?!

1.3  删除cookie

    只需把有效时间设为小于当前时间,和把值设置为空。例如:

    代码片段

    setcookie("name", "", time()-1);

    用header()类似。

1.4  常见问题解决:

    1) 用 setcookie()时有错误提示,可能是因为调用setcookie()前面有输出或空格。也可能你的文
       档是从其他字符集转换过来,文档后面可能带有 BOM 签名(就是在文件内容添加一些隐藏
       的BOM 字符)。解决的办法就是使你的文档不出现这种情况。还有通过使用ob_start()函数
       也能处理一点。
    2) $_COOKIE 受magic_quotes_gpc 影响,可能自动转义。
    3) 使用的时候,有必要测试用户是否支持cookie。

1.5 cookie 工作机理:

    有些学习者比较冲动,没心思把原理研究,所以我把它放后面。
    a) 服务器通过随着响应发送一个http 的Set-Cookie 头,在客户机中设置一个cookie(多个cookie
要多个头)。
    b) 客户端自动向服务器端发送一个http 的cookie 头,服务器接收读取。
    HTTP/1.x 200 OK
    X-Powered-By: PHP/5.2.1
    Set-Cookie: TestCookie=something from somewhere; path=/
    Expires: Thu, 19 Nov 2007 18:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Content-type: text/html

    这一行实现了cookie 功能,收到这行后

    Set-Cookie: TestCookie=something from somewhere; path=/

    浏览器将在客户端的磁盘上创建一个cookie 文件,并在里面写入:

    TestCookie=something from somewhere;
    /

    这一行就是我们用 setcookie('TestCookie','something   from  somewhere','/'); 的结果。也就是用
header('Set-Cookie: TestCookie=something from somewhere; path=/');的结果。

  评论这张
 
阅读(500)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017