当前位置:首页 > 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 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ? (…

无限分类实现 php

无限分类实现 php

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、部门架构等。以下是几种常见的实现方式: 邻接列表模式(Adjacency List) 邻接列表是最简单的实现方式,通过在每个记录…

php数据库实现

php数据库实现

PHP 连接 MySQL 数据库 使用 mysqli 扩展连接 MySQL 数据库: <?php $servername = "localhost"; $username = "usernam…

php实现扫码登录

php实现扫码登录

PHP 实现扫码登录的方案 扫码登录通常基于以下流程:用户访问网页生成二维码(含唯一标识),手机扫码后确认登录,服务器验证并完成登录状态同步。以下是具体实现方法: 生成二维码与唯一标识 使用 PHP…

php实现区块链

php实现区块链

PHP 实现区块链的基本步骤 PHP 可以用于实现一个简单的区块链系统,以下是关键步骤和代码示例: 区块类实现 创建一个 Block 类来表示区块链中的单个区块: class Bloc…

php实现视频直播

php实现视频直播

PHP 实现视频直播的基本方法 PHP 本身并不直接处理视频流,但可以作为后端支持视频直播系统的搭建。以下是几种常见的实现方式: 使用第三方流媒体服务 利用现成的流媒体平台(如 Wowza、Red5…