当前位置:首页 > PHP

php实现主动关注

2026-02-15 07:32:35PHP

实现用户主动关注功能的 PHP 方法

数据库设计 创建关注关系表(例如 user_follows),包含以下字段:

  • follower_id:关注者用户ID
  • followed_id:被关注者用户ID
  • created_at:关注时间戳
CREATE TABLE user_follows (
    follower_id INT NOT NULL,
    followed_id INT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (follower_id, followed_id),
    FOREIGN KEY (follower_id) REFERENCES users(id),
    FOREIGN KEY (followed_id) REFERENCES users(id)
);

关注操作处理 在PHP中处理关注请求的代码示例:

php实现主动关注

// 假设已获取当前用户ID和被关注用户ID
$followerId = $_SESSION['user_id'];
$followedId = $_POST['user_to_follow'];

// 检查是否已关注
$checkStmt = $pdo->prepare("SELECT COUNT(*) FROM user_follows WHERE follower_id = ? AND followed_id = ?");
$checkStmt->execute([$followerId, $followedId]);
$alreadyFollowing = $checkStmt->fetchColumn();

if (!$alreadyFollowing) {
    // 执行关注操作
    $insertStmt = $pdo->prepare("INSERT INTO user_follows (follower_id, followed_id) VALUES (?, ?)");
    $success = $insertStmt->execute([$followerId, $followedId]);

    if ($success) {
        // 关注成功处理
        echo json_encode(['status' => 'success']);
    } else {
        // 错误处理
        echo json_encode(['status' => 'error', 'message' => '关注失败']);
    }
} else {
    // 已关注处理
    echo json_encode(['status' => 'info', 'message' => '已关注该用户']);
}

取消关注实现 添加取消关注功能的PHP代码:

$deleteStmt = $pdo->prepare("DELETE FROM user_follows WHERE follower_id = ? AND followed_id = ?");
$success = $deleteStmt->execute([$followerId, $followedId]);

if ($success && $deleteStmt->rowCount() > 0) {
    echo json_encode(['status' => 'success']);
} else {
    echo json_encode(['status' => 'error', 'message' => '取消关注失败']);
}

前端交互实现 使用AJAX处理关注按钮点击:

php实现主动关注

$('.follow-btn').click(function() {
    const userId = $(this).data('user-id');
    const isFollowing = $(this).hasClass('following');

    $.post(isFollowing ? 'unfollow.php' : 'follow.php', 
        { user_to_follow: userId },
        function(response) {
            if (response.status === 'success') {
                $(this).toggleClass('following');
                $(this).text(isFollowing ? '关注' : '已关注');
            }
        }
    );
});

安全性考虑

  • 验证用户登录状态
  • 防止SQL注入(使用预处理语句)
  • 检查用户是否存在
  • 限制用户不能关注自己
// 验证示例
if ($followerId == $followedId) {
    http_response_code(400);
    echo json_encode(['status' => 'error', 'message' => '不能关注自己']);
    exit;
}

if (!isset($_SESSION['user_id'])) {
    http_response_code(401);
    echo json_encode(['status' => 'error', 'message' => '请先登录']);
    exit;
}

性能优化

  • 为关注关系表创建适当的索引
  • 考虑使用缓存存储关注关系
  • 批量查询关注状态以减少数据库查询
CREATE INDEX idx_follower ON user_follows(follower_id);
CREATE INDEX idx_followed ON user_follows(followed_id);

标签: 主动php
分享给朋友:

相关文章

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

php 函数实现

php 函数实现

PHP 函数实现基础 PHP 函数的定义使用 function 关键字,后跟函数名和参数列表。函数名不区分大小写,但建议保持一致。 function functionName($param1, $p…

php实现的进度条

php实现的进度条

PHP 实现的进度条方法 在 PHP 中实现进度条通常可以通过命令行脚本(CLI)或 Web 页面两种方式完成。以下是几种常见的实现方法: 命令行进度条 使用 PHP CLI 实现进度条,可以通过不…

php 实现评论

php 实现评论

实现 PHP 评论功能 数据库设计 创建数据库表存储评论数据,通常包含以下字段: id:评论唯一标识 user_id:用户ID content:评论内容 created_at:评论时间 parent…

php session 实现购物车

php session 实现购物车

PHP Session 实现购物车的方法 初始化 Session 在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。 session_sta…