PHP Cookie


HTTP是无状态的协议,它没有一个内建机制来保存两个请求之间的状态。当一个用户在请求一个页面后在请求另外一个页面,HTTP将无法告诉我们这两个请求是来自同一个用户。

而Cookie 是一种在浏览器端(客户端)储存数据并以此来跟踪和识别用户的机制。

PHP 提供 setcookie() 或 setrawcookie() 函数来设置 Cookie。

设置Cookie


<?php
$username = 'newbie';

setcookie("user", $username);
setcookie("user", $username, time() + 3600);  // 1 小时过期

// $user = $_COOKIE['user'];    // 不能在当前的请求中访问

设置成功后,值会被自动 urlencode 编码,并且不能立即在后面的代码中访问。

下次打开页面时可以使用 $_COOKIE 读取。

访问Cookie


<?php
$user = $_COOKIE['user'];
var_dump($user);    // 输出newbie

收到 Cookie 时,值会被自动 urldecode 解码。

删除Cookie


 要删除一个 cookie,只要将过期时间设置为过去,就可以触发浏览器的删除机制。 

<?php
// 设置过期时间为一个小时前
setcookie("user", "", time() - 3600);