php 实现浏览记录
实现浏览记录功能
在PHP中实现浏览记录功能可以通过多种方式完成,以下是几种常见的方法:
使用Cookie存储浏览记录
Cookie是一种简单的方式,适合存储少量数据。可以通过设置Cookie来保存用户的浏览记录。
// 添加浏览记录到Cookie
$item = ['id' => 123, 'title' => '示例商品'];
if (isset($_COOKIE['browse_history'])) {
$history = json_decode($_COOKIE['browse_history'], true);
array_unshift($history, $item);
$history = array_slice($history, 0, 10); // 限制记录数量
} else {
$history = [$item];
}
setcookie('browse_history', json_encode($history), time() + 86400 * 30, '/');
使用Session存储浏览记录
Session适合临时存储浏览记录,用户关闭浏览器后数据会丢失。
session_start();
$item = ['id' => 123, 'title' => '示例商品'];
if (isset($_SESSION['browse_history'])) {
array_unshift($_SESSION['browse_history'], $item);
$_SESSION['browse_history'] = array_slice($_SESSION['browse_history'], 0, 10);
} else {
$_SESSION['browse_history'] = [$item];
}
使用数据库存储浏览记录
对于需要长期保存的浏览记录,可以使用数据库存储。适合用户登录后的场景。
// 假设用户已登录,$userId为当前用户ID
$itemId = 123;
$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $pdo->prepare("INSERT INTO browse_history (user_id, item_id, browse_time) VALUES (?, ?, NOW())");
$stmt->execute([$userId, $itemId]);
// 查询最近浏览记录
$stmt = $pdo->prepare("SELECT * FROM browse_history WHERE user_id = ? ORDER BY browse_time DESC LIMIT 10");
$stmt->execute([$userId]);
$history = $stmt->fetchAll(PDO::FETCH_ASSOC);
结合Redis实现高性能浏览记录
对于高流量网站,可以使用Redis存储浏览记录,提高性能。
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$userId = 123;
$itemId = 456;
// 添加浏览记录
$redis->lPush("user:$userId:browse_history", $itemId);
// 限制记录数量
$redis->lTrim("user:$userId:browse_history", 0, 9);
// 获取浏览记录
$history = $redis->lRange("user:$userId:browse_history", 0, -1);
注意事项

- 对于敏感数据,应考虑加密存储
- 设置合理的记录数量限制,避免存储过多数据
- 考虑数据过期策略,自动清理旧记录
- 用户登录后应将临时存储的记录迁移到永久存储






