php cookie操作实例教程:cookie原理及setcookie用法

发布时间:2020-09-17编辑:脚本学堂
有关php操作cookie信息的方法,详细介绍了cookie的工作原理、cookie的定义与用法、setcookie语法、cookie注意事项,以及php cookie操作的几个例子。

php cookie操作实例教程

cookie和session都可以暂时保存在多个页面中使用的变量,但是它们有本质的差别。
cookie存放在客户端浏览器中,session保存在服务器上。它们之间的联系是session ID一般保存在cookie中。

1、cookie工作原理
当客户访问某个网站时,在PHP中可以使用setcookie函数生成一个cookie,系统经处理把这个cookie发送到客户端并保存在c:Documents and Settings用户名Cookies
目录下。cookie是HTTP标头的一部分,因此setcookie函数必须在任何内容送到浏览器之前调用。这种限制与header()函数一样。当客户再次访问该网站时,浏览器会
自动把c:Documents and Settings用户名Cookies目录下与该站点对应的cookie发送到服务器,服务器则把从客户端传来的cookie将自动地转化成一个PHP变量。
通过$_COOKIE['xxx']读取客户端发来的cookie。

2、cookie定义和用法
setcookie() 函数向客户端发送一个 HTTP cookie。
cookie 是由服务器发送到浏览器的变量。cookie 通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面,就会发送这个 cookie。
cookie 的名称指定为相同名称的变量。例如,如果被发送的 cookie 名为 "name",会自动创建名为 $user 的变量,包含 cookie 的值。
必须在任何其他输出发送前对 cookie 进行赋值。
如果成功,则该函数返回 true,否则返回 false。

3、setcookie语法
setcookie(name,value,expire,path,domain,secure)
参数描述
name必需。规定 cookie 的名称。
value必需。规定 cookie 的值。
expire可选。规定 cookie 的有效期。
path可选。规定 cookie 的服务器路径。
domain可选。规定 cookie 的域名
secure可选。规定是否通过安全的 HTTPS 连接来传输 cookie。

4、提示和注释

注释:
可以通过 $HTTP_COOKIE_VARS["user"] 或 $_COOKIE["user"] 来访问名为 "user" 的 cookie 的值。

注释:
在发送 cookie 时,cookie 的值会自动进行 URL 编码。接收时会进行 URL 解码。
如果不需要这样,可以使用 setrawcookie() 代替。

5、cookie注意事项
1、SetCookie()之前不能有任何html输出,就是空格,空白行都不行。
2、SetCookie()后,你在当前页调用echo $_COOKIE["name"]不会有输出。必须刷新或到下一个页面在过期之前才可以看到Cookie值。
3、由于 cookie 信息存储于用户的计算机中,那么就有可能伪造或修改 cookie 从而造成 cookie 欺骗,一般可以对 cookie 的值进行加密来预防欺骗。
读取 cookie 的时候,对 cookie 解密即可。
4、Cookie是保存在客户端的,用户禁用了Cookie,你的Cookie自然也就没作用啦!

例1:
设置并发送 cookie:
 

复制代码 代码示例:
$value = "my cookie value";
// 发送一个简单的 cookie
setcookie("TestCookie",$value);
 
<html>
<body>
...
...
<?php
$value = "my cookie value";
// 发送一个 24 小时候过期的 cookie
setcookie("TestCookie",$value, time()+3600*24);
?>
</body>
</html>

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

复制代码 代码示例:
<html>
<body>
<?php
// 输出个别的 cookie
echo $_COOKIE["TestCookie"];
echo "<br />";
echo $HTTP_COOKIE_VARS["TestCookie"];
echo "<br />";
// 输出所有 cookie
print_r($_COOKIE);
?>
</body>
</html>

程序输出:
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 <br />";
}
}

输出:
three : cookiethree
two : cookietwo
one : cookieone