当前位置:首页 > PHP

php实现关注

2026-02-14 12:18:46PHP

实现用户关注功能

在PHP中实现用户关注功能通常涉及数据库设计、前后端交互和逻辑处理。以下是关键实现步骤:

数据库设计

创建用户表和关注关系表,示例SQL:

php实现关注

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    -- 其他用户字段
);

CREATE TABLE 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)
);

关注操作处理

创建关注功能的PHP处理脚本(如follow.php):

<?php
session_start();
require 'db_connection.php'; // 数据库连接文件

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $followerId = $_SESSION['user_id']; // 当前登录用户
    $followingId = (int)$_POST['following_id'];

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

    if ($stmt->rowCount() > 0) {
        // 已关注则取消关注
        $deleteSql = "DELETE FROM follows WHERE follower_id = ? AND following_id = ?";
        $pdo->prepare($deleteSql)->execute([$followerId, $followingId]);
        echo json_encode(['status' => 'unfollowed']);
    } else {
        // 未关注则添加关注
        $insertSql = "INSERT INTO follows (follower_id, following_id) VALUES (?, ?)";
        $pdo->prepare($insertSql)->execute([$followerId, $followingId]);
        echo json_encode(['status' => 'followed']);
    }
}
?>

前端交互实现

使用AJAX实现无刷新关注操作:

php实现关注

document.querySelector('.follow-btn').addEventListener('click', function() {
    const userId = this.dataset.userid;
    fetch('follow.php', {
        method: 'POST',
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        body: `following_id=${userId}`
    })
    .then(response => response.json())
    .then(data => {
        if (data.status === 'followed') {
            this.textContent = '已关注';
            this.classList.add('active');
        } else {
            this.textContent = '关注';
            this.classList.remove('active');
        }
    });
});

关注列表查询

获取用户关注列表的PHP示例:

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

粉丝列表查询

获取用户粉丝列表的PHP示例:

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

安全注意事项

  • 验证用户登录状态
  • 使用预处理语句防止SQL注入
  • 对用户ID进行类型验证
  • 实现CSRF保护机制
  • 添加关注数量限制逻辑

以上实现可根据具体项目需求进行调整,例如添加关注通知、关注时间戳、双向关注关系等扩展功能。

标签: php
分享给朋友:

相关文章

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口通…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn =…

php实现注册登录

php实现注册登录

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

php实现域名

php实现域名

PHP实现域名操作的方法 获取当前域名 使用$_SERVER['HTTP_HOST']可以获取当前访问的域名: $currentDomain = $_SERVER['HTTP_HOST']; ech…

php实现apk下载

php实现apk下载

实现APK下载的PHP代码 创建一个简单的PHP脚本来处理APK文件的下载请求,确保文件传输正确且安全。 <?php $file = 'path/to/your/app.apk'; if (f…