当前位置:首页 > PHP

php实现收藏功能实现

2026-01-30 04:11:08PHP

数据库设计

创建数据库表存储用户收藏信息,通常需要用户ID和收藏项ID。示例表结构:

CREATE TABLE `user_favorites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `item_id` int(11) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_item` (`user_id`,`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

收藏功能实现

创建收藏操作的PHP处理脚本,检查是否已收藏避免重复:

// 连接数据库
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');

// 获取用户ID和收藏项ID
$userId = $_POST['user_id'];
$itemId = $_POST['item_id'];

// 检查是否已收藏
$stmt = $pdo->prepare("SELECT id FROM user_favorites WHERE user_id = ? AND item_id = ?");
$stmt->execute([$userId, $itemId]);

if ($stmt->rowCount() > 0) {
    echo '已收藏';
} else {
    // 执行收藏
    $insert = $pdo->prepare("INSERT INTO user_favorites (user_id, item_id) VALUES (?, ?)");
    $insert->execute([$userId, $itemId]);
    echo '收藏成功';
}

取消收藏功能

添加取消收藏的处理逻辑:

$delete = $pdo->prepare("DELETE FROM user_favorites WHERE user_id = ? AND item_id = ?");
$delete->execute([$userId, $itemId]);
echo '已取消收藏';

前端交互

使用AJAX实现无刷新收藏操作:

$('.favorite-btn').click(function() {
    let itemId = $(this).data('id');
    $.post('/favorite.php', {
        user_id: 当前用户ID,
        item_id: itemId
    }, function(response) {
        alert(response);
    });
});

安全性考虑

添加必要的安全验证:

// 验证用户登录状态
session_start();
if (!isset($_SESSION['user_id'])) {
    die('请先登录');
}

// 过滤输入
$userId = filter_var($_POST['user_id'], FILTER_VALIDATE_INT);
$itemId = filter_var($_POST['item_id'], FILTER_VALIDATE_INT);

性能优化

对于高频访问的收藏数据,可以考虑使用Redis缓存:

php实现收藏功能实现

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 检查缓存
$cacheKey = "user_favorites:$userId";
if ($redis->sIsMember($cacheKey, $itemId)) {
    echo '已收藏';
}

标签: 功能收藏
分享给朋友:

相关文章

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个流行的前端框架,用于构建用户界面和单页应用。以下是 Vue 功能实现的关键方法和技术。 数据绑定与响应式 Vue 的核心特性是数据绑定和响应式系统。通过 d…

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备与绑定 准备一个包含所有数据的数组,并使用v-model或v-…

vue实现粘贴功能

vue实现粘贴功能

实现粘贴功能的基本方法 在Vue中实现粘贴功能通常涉及监听paste事件,并处理剪贴板数据。以下是一个基础实现示例: <template> <div @paste="handl…

vue实现模态功能

vue实现模态功能

Vue 实现模态框功能 方法一:使用组件和v-if/v-show控制显示 创建独立的模态框组件(如Modal.vue),通过props接收标题、内容等数据,使用v-if或v-show控制显示状态。…

vue 分页功能实现

vue 分页功能实现

分页功能实现方法 使用 Element UI 的分页组件 Element UI 提供了现成的分页组件 el-pagination,可以快速实现分页功能。 安装 Element UI: npm in…

vue各种功能实现

vue各种功能实现

Vue 基础功能实现 数据绑定与响应式更新 使用 v-model 实现表单元素与数据的双向绑定,数据变更自动更新视图。 示例: <input v-model="message"> &…