PHP 中cookie


1. PHP 的COOKIE

    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=/');的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值