当前位置:首页 > 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中实现注册功能通常需要结合前端表单和后端API交互。以下是常见的实现方式: 创建注册表单组件 <template> <div class…

vue实现桌面功能

vue实现桌面功能

Vue 实现桌面功能的方法 Vue.js 可以通过结合 Electron 或 NW.js 等框架实现桌面应用开发。以下是几种常见的方法: 使用 Vue 与 Electron 结合 Electron…

uniapp支付功能怎么实现

uniapp支付功能怎么实现

uniapp支付功能实现方法 准备工作 注册微信支付、支付宝等平台的开发者账号,获取必要的商户ID(mch_id)、API密钥(key)、应用ID(appid)等信息。确保项目已配置好相关支付SDK。…

vue实现后台功能

vue实现后台功能

Vue 实现后台功能的方法 Vue.js 是一个流行的前端框架,适合构建后台管理系统。以下是实现后台功能的常见方法和步骤。 项目初始化 使用 Vue CLI 或 Vite 初始化项目: # Vue…

vue实现收货功能

vue实现收货功能

实现收货功能的基本思路 在Vue中实现收货功能通常涉及前端界面交互、后端API调用以及状态管理。以下是关键步骤和代码示例: 页面布局与数据绑定 使用Vue的模板语法构建收货表单,包含收货人、联系方式…

vue功能实现难点

vue功能实现难点

Vue 功能实现的常见难点 响应式系统深度监听 Vue 的响应式系统基于 Object.defineProperty(Vue 2)或 Proxy(Vue 3),但对嵌套对象或数组的深层属性变化需要额外…