> **警告:**这篇文章是多年前写的,一些信息可能已经过时或不正确。阅读时请牢记这一点。
Cookies是存储在网站访问者的浏览器中的一小段文本信息。它们总是随着每个页面的再次加载而转移,并且可以被用户随时删除、改变和读取,因此它们不太适合存储个人信息。
*警告:如果您的网站使用cookies来跟踪用户或第三方插件(如Facebook的喜欢按钮,谷歌分析的流量表,广告横幅),您必须告知用户这一点。
"还有一点要注意:在获得同意之前,你的网站不应包含广告或测量代码。而这很糟糕。"
所有的cookie都存储在超全局变量$_COOKIE
中,该变量将每个键存储为一个数组。
例如,如果我们在cookie中的user
键下存储了当前登录用户的名字,我们就可以很容易地检索到它。
echo $_COOKIE['用户'];
请注意:Cookies可能并不总是存在(例如,如果你是一个新用户)。因此,我们应该在任何列表前始终检查是否存在cookies,并在必要时提供一个替代的错误信息。
if (isset($_COOKIE['用户']) && $_COOKIE['用户']) {echo '登录的用户。' . $_COOKIE['用户'];} else {echo '没有人签入。';}
由于所有的cookie都存储在超全局变量$_COOKIE
中,因此可以很容易地列出它们。
var_dump($_COOKIE);
或者,也可以通过循环,获得所有的键和值。
foreach($_COOKIE as $key => $value) {echo $key . ':' . $value; // 写出键和值echo '<br>'; //包住这一行}
setcookie()
函数用于在cookies中存储数据。
第一个参数是cookie密钥,用于从$_COOKIE
字段中读取,第二个参数是数据本身的字符串。
通过第三个参数,我们可以(选择性地)设置cookie的有效期。可用的时间是以时间戳的形式给出的,所以如果我们想设置一个有效期为1小时的cookie,从这一刻开始,我们只需要写time() + 3600
。
$data = '我们想储存的一些内容。';setcookie('测试Cookie', $data);setcookie('测试Cookie', $data, time() + 3600);
Cookie不适合存储较大的数据(浏览器通常只允许存储4 kB和最多20个Cookie,该大小还包括Cookie名称、有效性设置等)。
最好是在服务器上存储更大的数据,只在cookie中放一个标识符,通过它我们可以知道它属于哪个用户。这个方法叫做"$_SESSION",将在另一篇文章中讨论。
如果你不一定需要在服务器上始终同步地存储数据,你可以使用javascript中可用的**localstorage**存储。它的容量在MB的数量级,数据不会过期。
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | zh