当前位置:首页 > 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.js结合其响应式特性和组件化开发方式,可以高效实现这一功能。 核心实现步骤 创建轨…

uniapp支付功能怎么实现

uniapp支付功能怎么实现

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

vue实现收货功能

vue实现收货功能

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

vue实现功能列表

vue实现功能列表

Vue 实现功能列表的方法 在 Vue 中实现功能列表通常涉及数据绑定、列表渲染、事件处理和状态管理。以下是几种常见的方法: 数据驱动列表渲染 使用 v-for 指令可以轻松实现列表渲染。假设有一个…

vue 分页功能实现

vue 分页功能实现

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

vue实现截图功能

vue实现截图功能

Vue实现截图功能的方法 使用html2canvas库 html2canvas是一个流行的JavaScript库,可以将HTML元素转换为Canvas,进而生成图片。在Vue项目中安装html2can…