当前位置:首页 > PHP

php收藏功能实现

2026-01-28 20:57:36PHP

数据库设计

创建一个用于存储收藏信息的表,通常包含用户ID、收藏内容ID和收藏时间等字段。以下是一个简单的MySQL表结构示例:

CREATE TABLE `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');

// 处理收藏请求
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['item_id'])) {
    $userId = $_SESSION['user_id']; // 从会话获取用户ID
    $itemId = (int)$_POST['item_id'];

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

    if ($stmt->rowCount() > 0) {
        // 取消收藏
        $pdo->prepare("DELETE FROM favorites WHERE user_id = ? AND item_id = ?")
            ->execute([$userId, $itemId]);
        echo json_encode(['status' => 'removed']);
    } else {
        // 添加收藏
        $pdo->prepare("INSERT INTO favorites (user_id, item_id) VALUES (?, ?)")
            ->execute([$userId, $itemId]);
        echo json_encode(['status' => 'added']);
    }
    exit;
}

前端交互

使用AJAX实现无刷新收藏功能:

document.querySelectorAll('.favorite-btn').forEach(btn => {
    btn.addEventListener('click', function() {
        const itemId = this.dataset.itemId;

        fetch('/favorite.php', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
            },
            body: `item_id=${itemId}`
        })
        .then(response => response.json())
        .then(data => {
            if (data.status === 'added') {
                this.classList.add('active');
            } else {
                this.classList.remove('active');
            }
        });
    });
});

安全性考虑

实现收藏功能时需要考虑以下安全措施:

  • 验证用户登录状态
  • 对输入参数进行过滤和类型转换
  • 使用预处理语句防止SQL注入
  • 实现CSRF保护

性能优化

对于高流量网站可以考虑:

php收藏功能实现

  • 添加缓存层减少数据库查询
  • 使用批量操作处理大量数据
  • 为常用查询字段建立合适索引

以上实现方案可以根据具体需求进行调整和扩展,例如添加收藏分类、收藏备注等功能。

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

相关文章

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个渐进式 JavaScript 框架,广泛用于构建用户界面。以下是 Vue 功能的常见实现方法。 数据绑定 Vue 的核心功能之一是数据绑定,通过 v-mod…

vue实现答题功能

vue实现答题功能

Vue实现答题功能 数据准备 创建一个包含题目、选项和正确答案的数据结构,通常是一个数组对象。每个题目对象包含问题文本、选项数组和正确答案索引。 const questions = [ {…

vue实现付费功能

vue实现付费功能

Vue 实现付费功能的方法 集成第三方支付平台 选择适合的第三方支付平台(如支付宝、微信支付、Stripe、PayPal等),并按照其文档进行集成。在 Vue 项目中,可以通过引入支付平台的 SDK…

vue分类功能实现

vue分类功能实现

Vue分类功能实现方法 使用v-for指令渲染分类列表 在Vue模板中使用v-for循环渲染分类数据,结合v-bind动态绑定分类ID或其他属性 <div v-for="category in…

vue实现直播功能

vue实现直播功能

使用 Vue 实现直播功能 方案一:基于 WebRTC 实现实时直播 技术栈选择 Vue 3 + WebRTC (RTCPeerConnection) 信令服务器(可选 Socket.io) 媒体服…

vue实现点击收藏

vue实现点击收藏

实现点击收藏功能 在Vue中实现点击收藏功能可以通过以下步骤完成,涉及数据绑定、事件处理和状态管理。 数据绑定与状态管理 在Vue组件中定义一个isFavorited的响应式数据,用于表示当前是否已…