当前位置:首页 > PHP

php 实现关注

2026-03-13 00:34:23PHP

实现用户关注功能

在PHP中实现用户关注功能通常涉及数据库设计和前后端交互。以下是常见的实现方法:

数据库设计

创建用户表和关注关系表是基础步骤。用户表存储用户信息,关注关系表记录用户之间的关注关系。

用户表结构示例:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

关注关系表结构示例:

CREATE TABLE user_follows (
    follower_id INT NOT NULL,
    following_id INT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (follower_id, following_id),
    FOREIGN KEY (follower_id) REFERENCES users(id),
    FOREIGN KEY (following_id) REFERENCES users(id)
);

关注操作实现

处理关注操作需要检查是否已关注,然后执行相应操作。

关注功能代码示例:

function followUser($followerId, $followingId) {
    // 检查是否已关注
    $checkSql = "SELECT * FROM user_follows WHERE follower_id = ? AND following_id = ?";
    $stmt = $pdo->prepare($checkSql);
    $stmt->execute([$followerId, $followingId]);

    if ($stmt->rowCount() > 0) {
        return false; // 已关注
    }

    // 执行关注
    $insertSql = "INSERT INTO user_follows (follower_id, following_id) VALUES (?, ?)";
    $stmt = $pdo->prepare($insertSql);
    return $stmt->execute([$followerId, $followingId]);
}

取消关注实现

取消关注操作与关注类似,但执行的是删除操作。

取消关注代码示例:

function unfollowUser($followerId, $followingId) {
    $sql = "DELETE FROM user_follows WHERE follower_id = ? AND following_id = ?";
    $stmt = $pdo->prepare($sql);
    return $stmt->execute([$followerId, $followingId]);
}

获取关注列表

查询用户关注的人或被关注的人列表是常见需求。

获取关注列表代码示例:

function getFollowingList($userId) {
    $sql = "SELECT u.id, u.username FROM user_follows uf 
            JOIN users u ON uf.following_id = u.id 
            WHERE uf.follower_id = ?";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$userId]);
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

前端交互实现

前端通常通过AJAX与后端交互,实现无刷新关注/取消关注。

前端AJAX示例:

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

    $.ajax({
        url: isFollowing ? 'unfollow.php' : 'follow.php',
        method: 'POST',
        data: { user_id: userId },
        success: function(response) {
            if (response.success) {
                $(this).toggleClass('following');
                $(this).text(isFollowing ? '关注' : '已关注');
            }
        }
    });
});

安全性考虑

实现关注功能时需要考虑安全性问题,防止CSRF攻击和未授权访问。

安全措施示例:

php 实现关注

// 检查用户是否登录
session_start();
if (!isset($_SESSION['user_id'])) {
    http_response_code(401);
    exit();
}

// 使用CSRF令牌
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
        http_response_code(403);
        exit();
    }
}

这些方法组合起来可以构建一个完整的用户关注系统,根据具体需求可以进一步扩展功能。

标签: php
分享给朋友:

相关文章

php 实现秒杀

php 实现秒杀

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

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

php实现注册登录

php实现注册登录

PHP 注册功能实现 创建数据库表(以 MySQL 为例) CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…

php实现文章

php实现文章

PHP实现文章管理功能 在PHP中实现文章管理功能通常涉及数据库操作、表单处理和页面展示。以下是实现文章管理的基本步骤: 数据库设计 创建articles表,包含字段如id、title、conten…

php 实现评论

php 实现评论

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