当前位置:首页 > PHP

php实现点赞

2026-04-02 22:02:18PHP

实现点赞功能的基本思路

点赞功能通常涉及前端交互和后端数据处理。前端负责用户点击触发,后端处理数据存储和更新。以下是实现点赞功能的常见方法。

数据库设计

创建数据表存储点赞信息,例如:

CREATE TABLE likes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    post_id INT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY (user_id, post_id)
);

user_idpost_id组合唯一约束防止重复点赞。

php实现点赞

后端PHP处理

创建点赞接口处理请求:

<?php
header('Content-Type: application/json');

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

$userId = $_POST['user_id'] ?? 0;
$postId = $_POST['post_id'] ?? 0;

// 验证输入
if (!$userId || !$postId) {
    echo json_encode(['success' => false, 'message' => 'Invalid input']);
    exit;
}

try {
    // 检查是否已点赞
    $stmt = $pdo->prepare("SELECT id FROM likes WHERE user_id = ? AND post_id = ?");
    $stmt->execute([$userId, $postId]);

    if ($stmt->fetch()) {
        // 已点赞,执行取消
        $pdo->prepare("DELETE FROM likes WHERE user_id = ? AND post_id = ?")->execute([$userId, $postId]);
        echo json_encode(['success' => true, 'action' => 'unlike']);
    } else {
        // 未点赞,执行点赞
        $pdo->prepare("INSERT INTO likes (user_id, post_id) VALUES (?, ?)")->execute([$userId, $postId]);
        echo json_encode(['success' => true, 'action' => 'like']);
    }
} catch (PDOException $e) {
    echo json_encode(['success' => false, 'message' => $e->getMessage()]);
}

前端实现

使用AJAX发送点赞请求:

php实现点赞

function toggleLike(postId, userId) {
    fetch('like.php', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: `user_id=${userId}&post_id=${postId}`
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            const button = document.querySelector(`.like-btn[data-post="${postId}"]`);
            if (data.action === 'like') {
                button.classList.add('liked');
                button.textContent = 'Unlike';
            } else {
                button.classList.remove('liked');
                button.textContent = 'Like';
            }
        }
    });
}

获取点赞数量

添加获取点赞数量的接口:

<?php
header('Content-Type: application/json');

$postId = $_GET['post_id'] ?? 0;

if (!$postId) {
    echo json_encode(['success' => false]);
    exit;
}

try {
    $stmt = $pdo->prepare("SELECT COUNT(*) as count FROM likes WHERE post_id = ?");
    $stmt->execute([$postId]);
    $result = $stmt->fetch();
    echo json_encode(['success' => true, 'count' => $result['count']]);
} catch (PDOException $e) {
    echo json_encode(['success' => false]);
}

性能优化考虑

对于高流量场景,可以考虑以下优化:

  • 使用Redis等缓存系统存储点赞数据
  • 批量更新数据库而非每次操作都写入
  • 实现乐观锁防止并发问题

安全注意事项

  • 验证用户身份防止伪造请求
  • 对输入参数进行严格过滤
  • 使用CSRF令牌保护表单
  • 限制频繁操作防止滥用

以上实现提供了点赞功能的基本框架,可根据具体需求进行调整和扩展。

标签: php
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTMP协…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…