PHP Cookie


本教程介绍了cookie的概念,并学习如何使用PHP cookie在web浏览器的请求之间维护web应用程序的状态。

cookie介绍

cookie是以文本格式存储在用户的web浏览器中的信息。
cookie以一个或多个名称-值对的形式存储,这些名称-值对可能出于隐私和安全目的进行了加密。
cookie也称为web cookie、HTTP cookie或浏览器cookie。

web服务器将cookie作为HTTP头的一部分发送到web浏览器。无论何时浏览器从web服务器请求页面,cookie都会在请求中被发送回web服务器,以便网站能够读取其中的信息并执行必要的任务,比如根据用户首选项进行个性化设置。

cookie允许您存储最多4KB的数据,这是一个非常小的数量。cookie有效期是固定的。您可以将cookie的过期时间从几秒设置为任意长时间。特别是,您可以设置当web浏览器关闭时cookie即过期。

大多数现代web浏览器允许用户选择是否接受cookie,因此您不应该完全依赖它来存储关键数据。此外,现代web浏览器允许您为每个惟一域存储至少20个cookie。

设置PHP Cookie

PHP中使用setcookie()函数可以使得处理cookie变得很容易。

1
2
<?php
setcookie($name, $value, $expire, $path, $domain, $secure);

setcookie()函数中的参数:

  • $name:cookie的名称
  • $value:cookie的值。它可以是任何标量值,如字符串或整数。
  • $expire:cookie过期的时间。如果未设置$expire,则当用户关闭web浏览器时,cookie将过期。
  • $path:将返回cookie的web服务器上的路径。
  • $domain:cookie将返回的域。
  • $secure:true表示cookie是通过安全HTTP即HTTPS发送的。默认值为false。

让我们来看一个在PHP中设置cookie的例子。

1
2
<?php
setcookie('user','itroad',time() + 3600);

请注意,cookie必须在脚本的任何输出之前发送。

PHP读取 Cookie

设置好cookie之后,可以使用$_COOKIE超全局数组读取它的值。在读取cookie的值之前,应该使用isset()函数检查cookie是否可用。

下面的例子演示了如何读取我们在上面例子中设置的cookie:

1
2
3
4
<?php
if(isset($_COOKIE['user'])){
echo 'Welcome, '. $_COOKIE['user']. '!';
}

删除PHP Cookie

如果您不再需要您设置的cookie,您可以强制浏览器删除它。
但是,在PHP中没有直接删除cookie的函数。不过可以使用setcookie()函数来删除一个cookie:

  • 将cookie的值参数设置为空。
  • 将time参数设置为过期的值。

下面的示例通过将用户cookie的值重置为空同时将过期时间重置为过去的时间来删除用户cookie:

1
2
3
4
<?php
if(isset($_COOKIE['user'])){
setcookie('user','', time()-3600);
}

将代码整合在一起

在下面的示例中,我们使用cookie来显示web页面的页面视图,当页面视图数量达到10时,我们将其重置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
 
define('MAX_PAGEVIEW',10);
$msg = '';
 
// 如果还没有设置pageview cookie,则设置
if(!isset($_COOKIE['pageview'])){
setcookie('pageview',1,0,'/');
$msg = 'Welcome to my site!';
}else{
// 在cookie中读取pageview值
$pageview = (int)$_COOKIE['pageview'];
$pageview +=1;
 
if($pageview <= MAX_PAGEVIEW){
setcookie('pageview',$pageview,0,'/');
$msg = sprintf('Pageview #%d',$pageview);
}else{
setcookie('pageview','',time() - 3600,'/');
$msg = 'Cookie has been removed!';
}
}
?>
 
<h1>Cookie 示例</h1>
<?php echo $msg;


原文链接:https://codingdict.com/