可以在 PHP 中处理 Cookie。在这里,我将解释如何在 PHP 中使用 cookie。
Cookie 用于在客户端存储数据。比如你给浏览过一次主页的客户端发送一个cookie并存储起来,下次访问主页的时候检查cookie是否存在,看是否是第一个访问者就可以做到。
所以,首先,当访问主页时,我们将检查如何向客户端发送cookie并保存它。使用 setcookie 函数。
setcookie
bool setcookie ( string name [, string value [, int expire [, string path
[, string domain [, int secure]]]]] )
---------------------------------------------------------------------------------
setcookie() 定义一个 cookie 与其他标头信息一起发送。与其他标头信息一样,Cookie 包含在脚本的任何其他输出中。必须在之前发送 如果在调用此函数之前,setcookie中存在值,setcookie() 就会失败并返回 FALSE。如果成功执行则返回 TRUE,表示cookie功能已经被用户允许接受。
参数:
名称 cookie 名称
值 cookie 值
过期 cookie 过期
path 您希望 cookie 有效的服务器上的路径
domain cookie 有效的域
如果设置为 secure 1,则 cookie 将仅用于安全 HTTPS 连接。
将被发送。默认为 0
反馈:
如果成功则为真
基础是 cookie 的名称和值。例如,如果您创建一个名为“visited”的 cookie,并将访问次数“1”写入值,它将如下所示。
<?php
setcookie("visited", 1);
?>
示例代码
让我们实际尝试一下
<?php
$flag = setcookie("visited", 1);
?>
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
if ($flag){
print('<p>写入cookie了</p>');
}else{
print('<p>写入cookie失败</p>');
}
?>
</body>
</html>
如果将上述文件安装在WWW服务器上,通过浏览器查看,将显示如下。
现在您可以在客户端编写cookie。在下一页,我们现在将读取存储在客户端的 cookie 的值。
读取并不意味着去客户端查看硬盘的内容。当服务器保存了一个 cookie 后,下次访问同一台服务器时,该服务器保存的 cookie 将作为环境变量发送到服务器。在服务器端,当有客户端请求页面等时,确认cookie是否一起发送。
要检查客户端是否发送了 cookie,可以使用 PHP 中的预定义变量“$_COOKIE”进行检查。“$_COOKIE”是一个关联数组,存储了所有发送到服务器的cookies。要找出特定 cookie 的值,请执行以下操作:
$val = $_COOKIE["cookie名"]
例如,如果要检索上一页使用的名为“visited”的 cookie 的值,请编写如下。
$val = $_COOKIE["visited"]
示例代码
让我们实际尝试一下。下面首先检查cookie的值,如果没有发送过cookie,则在cookie中保存初始值,如果保存过cookie,则提取值并加1。(有关isset 函数,请参阅 确定变量是否存在 (isset) )。
<?php
if (isset($_COOKIE["visited"])){
$count = $_COOKIE["visited"] + 1;
}else{
$count = 1;
}
$flag = setcookie("visited", $count);
?>
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
print('<p>访问次数为'.$count.'次.</p>');
?>
</body>
</html>
如果将上述文件安装在WWW服务器上,通过浏览器查看,将显示如下。
如果您没有为 cookie 指定过期日期,它会在客户端浏览器关闭时消失。如果您希望 cookie 即使在浏览器关闭后仍保留一段时间,请明确设置过期日期。
到期日期由 setcookie 函数的第三个参数指定。指定值是从UNIX标准时间1970年1月1日起以秒为单位指定的,过程是将转换后的值相加并设置。
time 函数可用于获取自当前 UNIX 标准时间以来经过的秒数。(时间函数见 “获取日期和时间(time, date) ”)。
如果您希望到期日期为从现在起 3天
time() + 259200
259200 = 60(秒)* 60(分钟)* 24(小时)* 3(天)
示例代码
让我们试试吧。下面,过期时间设置为3分钟。
<?php
if (isset($_COOKIE["visited"])){
$count = $_COOKIE["visited"] + 1;
}else{
$count = 1;
}
$flag = setcookie("visited", $count, time() + 180);
?>
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
print('<p>访问次数为'.$count.'次</p>');
?>
</body>
</html>
如果将上述文件安装在WWW服务器上,通过浏览器查看,将显示如下。下面是重装几次。
当您不再需要它们时,您可以删除它们。尽可能删除不需要的 cookie。
要删除 cookie,请通过将过期日期设置为旧时间来将其删除。例如:
time() - 1800
示例代码
让我们试试吧。在下面的示例中,cookie 将在访问 3 次后被删除。
<?php
if (isset($_COOKIE["visited"])){
$count = $_COOKIE["visited"] + 1;
}else{
$count = 1;
}
if ($count > 3){
setcookie("visited", $count, time() - 1800);
}else{
setcookie("visited", $count);
}
?>
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
print('<p>访问次数为'.$count.'次</p>');
?>
</body>
</html>
如果将上述文件安装在WWW服务器上,通过浏览器查看,将显示如下。
服务器可以向客户端发送多个 cookie。例如,您可以发送多个 cookie,如下所示。
setcookie("user", "yuhua");
setcookie("pass", "password");
但是,客户端最多只能保存来自一台服务器的 20 个 cookie,总共最多 300 个 cookie。因此,如果您想使用大量 cookie,则需要设计。。
如果要发送超过 20 个 cookie,请将 cookie 名称视为一个数组,并为数组的每个元素设置一个值。
setcookie("buy[1]", "DVD");
setcookie("buy[2]", "PHONE");
setcookie("buy[3]", "PC");
这样,只有“buy”被用作 cookie 名称,因此只消耗了一个 cookie。
删除时,请执行以下操作:
$val = $_COOKIE['cookie'];
print($val[1]);
print($val[2]);
print($val[3]);
示例代码
让我们试试吧。
<?php
setcookie("buy[1]", "DVD");
setcookie("buy[2]", "PHONE");
setcookie("buy[3]", "PC");
?>
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
if (isset($_COOKIE["buy"])){
$val = $_COOKIE["buy"];
print('<p>');
print('下面是你购买的<br>');
print($val[1].'<br>');
print($val[2].'<br>');
print($val[3]);
print('</p>');
}else{
print('<p>重新设置完成</p>');
}
?>
</body>
</html>
如果将上述文件安装在WWW服务器上,通过浏览器查看,将显示如下。