一、cookie的基本用法
在 PHP 中,cookie 是一种用于在客户端(浏览器)和服务器之间存储数据的一种机制。 它们通常用于跟踪和识别用户,并存储用户的偏好设置。下面是一些常见的用法和函数来操作 cookie。
1.设置 Cookie:
可以使用 setcookie()
函数来设置 cookie。该函数有多个参数,其中最重要的是名称和值。下面是一个设置 cookie 的例子:
setcookie("username", "JohnDoe", time() + 3600, "/");
上面的代码将创建一个名为 “username” 的 cookie,值为 “JohnDoe”。time() + 3600
参数将 cookie 的过期时间设置为当前时间的一小时后。最后一个参数 “/” 是可选的,用于指定 cookie 的可访问路径。
2.获取 Cookie:
使用 $_COOKIE
超全局变量来访问 cookie。这个变量是一个关联数组,包含了当前请求中发送的所有 cookie。
下面是一个使用 $_COOKIE
访问 cookie 的例子:
if (isset($_COOKIE["username"])) { $username = $_COOKIE["username"]; echo "Welcome back, " . $username; } else { echo "Welcome, guest!"; }
上面的代码首先检查是否存在名为 “username” 的 cookie,如果存在则将其值存储在 $username
变量中,然后输出欢迎消息。如果不存在,则输出默认的欢迎消息。
3.删除 Cookie:
要删除 cookie,可以通过将 cookie 的过期时间设置为一个早于当前时间的时间戳来实现。例如:
setcookie("username", "", time() - 3600, "/");
上面的代码将 “username” cookie 的过期时间设置为一个小时前,这将导致浏览器立即删除该 cookie。请注意,删除 cookie 需要确保在发送任何输出之前执行。
这是一些基本的 cookie 用法。还有其他一些参数和选项可以用来设置和操作 cookie,你可以查阅 PHP 官方文档来获取更详细的信息。
二、实战开发应用
在购物网站,最常见的做法:猜你喜欢,即在未正常登录的时候,浏览很多商品时,系统会自动记录你的浏览历史,并在猜你喜欢等展示位置显示你最近的足迹。这个就是使用到cookie的一个用发。那么,如何使用呢?
1.设置cookie封装函数
COOKIE的基本设置方式,便于快速调用和修改,封装为函数,统一调用。
//设置cookie function set_cookie($name, $value = '', $expire = 0, $path = "/", $domain = null) { $cookiedomain = ''; //COOKIE作用域 $domain = $domain == null ? $cookiedomain: $domain; setcookie($name, $value, $expire, $path, $domain); }
2.商品页,读取商品ID,并设置cookie
//记录最近浏览 $p = $_GET['id']; $history_tmp = isset($_COOKIE['history']) ? $_COOKIE['history'] : ''; $history = array_filter(explode(',', $history_tmp)); if (in_array($p, $history) == false) { if (count($history) == 30) { unset($history[0]); } array_push($history, $p); $history_tmp = implode(',', $history); set_cookie('his', $history_tmp, time() + 15552000); }
3.获取最近浏览商品
function get_history($num) { $history = isset($_COOKIE['history']) ? $_COOKIE['history'] : ''; $his = array_filter(explode(',', $history)); $count = count($his); $ids = array(); $row = array(); $num = $count > $num ? $num : $count; $n = $count - 1; for ($i = 0; $i < $num; $i++) { $id = intval(ucode($his[$n - $i])); if ($id > 0) { $ids[] = $id; } } if (count($ids) > 0) { $row = "";//读取数据表 } return $row; }
@漏刻有时