Home > php教程 > PHP源码 > body text

PHP中设置、使用、删除Cookie详解

WBOY
Release: 2016-06-08 17:24:01
Original
1188 people have browsed it

Cookie是php中一个常用到的功能了,下面我来给大家介绍PHP中Cookie设置、使用、删除方法,有需要了解cookie的用法的朋友可进入参考。

<script>ec(2);</script>

cookie语法

int SetCookie(string name, string value, int expire, string path, string domain, int secure);


在同一个页面设置Cookie,实际是从后往前,所以如果要在插入一个新的Cookie之前删掉一个,你必须先写插入的语句,再写删除的语句,否则可能会出现不希望的结果。 来看几个例子:

 
简单的:

 

 代码如下 复制代码
SetCookie(“Myookie”, “Value of MyCookie”);

例子 1

设置并发送 cookie:

 代码如下 复制代码

$value = "my cookie value";

// 发送一个简单的 cookie
setcookie("TestCookie",$value);
?>


...
...

 代码如下 复制代码

$value = "my cookie value";

// 发送一个 24 小时候过期的 cookie
setcookie("TestCookie",$value, time()+3600*24);
?>


...

...


例子 2
检索 cookie 值的不同方法:

 代码如下 复制代码


// 输出个别的 cookie
echo $_COOKIE["TestCookie"];
echo "
";
echo $HTTP_COOKIE_VARS["TestCookie"];
echo "
";

// 输出所有 cookie
print_r($_COOKIE);
?>


输出:

my cookie value
my cookie value
Array ([TestCookie] => my cookie value)

例子 3
通过把失效日期设置为过去的日期/时间,删除一个 cookie:

 代码如下 复制代码

// 把失效日期设置为一小时前
setcookie ("TestCookie", "", time() - 3600);
?>


...
...例子 4
创建一个数组 cookie:

 代码如下 复制代码

setcookie("cookie[three]","cookiethree");
setcookie("cookie[two]","cookietwo");
setcookie("cookie[one]","cookieone");

// 输出 cookie (在重载页面后)
if (isset($_COOKIE["cookie"]))
  {
  foreach ($_COOKIE["cookie"] as $name => $value)
    {
    echo "$name : $value
";
    }
  }
?>


...
...输出:

three : cookiethree
two : cookietwo
one : cookieone

 
里还有一点要说明的,比如你的站点有几个不同的目录,那么如果只用不带路径的Cookie的话,在一个目录下的页面里设的Cookie在另一个目录的页面里是看不到的,也就是说,Cookie是面向路径的。实际上,即使没有指定路径,WEB服务器会自动传递当前的路径给浏览器的,指定路径会强制服务器使用设置的路径。解决这个问题的办法是在调用SetCookie时加上路径和域名,域名的格式可以是“www.smalluv.com”,也可是 “.phpuser.com”。 SetCookie函数里表示value的部分,在传递时会自动被encode,也就是说,如果value的值是“test value”在传递时就变成了“test%20value”,跟URL的方法一样。当然,对于程序来说这是透明的,因为在PHP接收Cookie的值时会自动将其decode。

 如果要设置同名的多个Cookie,要用数组,方法是:

 代码如下 复制代码

SetCookie(“CookieArray[]“, “Value 1″);

SetCookie(“CookieArray[]“, “Value 2″);
 

 

SetCookie(“CookieArray[0]“, “Value 1″);

SetCookie(“CookieArray[1]“, “Value 2″);

 

 

2、接收和处理Cookie

 PHP对Cookie的接收和处理的支持非常好,是完全自动的,跟FORM变量的原则一样,特别简单。 比如设置一个名为MyCookier的Cookie,PHP会自动从WEB服务器接收的HTTP头里把它分析出来,并形成一个与普通变量一样的变量,名为 $myCookie,这个变量的值就是Cookie的值。数组同样适用。

 

另外一个办法是引用PHP的全局变量$HTTP_COOKIE_VARS数组。

 分别举例如下:(假设这些都在以前的页面里设置过了,并且仍然有效)

 代码如下 复制代码

 
echo $MyCookie;
echo $CookieArray[0];
echo count($CookieArray);
echo $HTTP_COOKIE_VARS["MyCookie"];

 

就这么简单。

 
3、删除Cookie

要删除一个已经存在的Cookie,有两个办法:
 

一是调用只带有name参数的SetCookie,那么名为这个name的Cookie将被从关系户机上删掉;
 
另一个办法是设置Cookie的失效时间为 time()或time()-1,那么这个Cookie在这个页面的浏览完之后就被删除了(其实是失效了)。 要注意的是,当一个Cookie被删除时,它的值在当前页在仍然有效的。

 代码如下 复制代码

setcookie($cookiename, '');

或者

setcookie($cookiename, NULL);

都会删除cookie,当然这些手册中并没有。

带失效时间的:

 代码如下 复制代码

 SetCookie(“WithExpire”, “Expire in 1 hour”, time()+3600);//3600秒=1小时

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template