当前位置:首页 > PHP

php 实现 好友

2026-02-14 23:07:25PHP

实现好友系统的基本功能

在PHP中实现好友系统通常涉及用户关系管理、数据库设计和前后端交互。以下是实现好友功能的核心步骤和代码示例。

数据库设计

创建用户表和好友关系表存储用户信息和好友关系:

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

CREATE TABLE friendships (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user1_id INT NOT NULL,
    user2_id INT NOT NULL,
    status ENUM('pending', 'accepted', 'rejected') DEFAULT 'pending',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user1_id) REFERENCES users(id),
    FOREIGN KEY (user2_id) REFERENCES users(id)
);

发送好友请求

处理用户发送好友请求的逻辑:

function sendFriendRequest($senderId, $receiverId) {
    global $conn;
    $stmt = $conn->prepare("INSERT INTO friendships (user1_id, user2_id, status) VALUES (?, ?, 'pending')");
    $stmt->bind_param("ii", $senderId, $receiverId);
    return $stmt->execute();
}

接受或拒绝好友请求

处理好友请求的响应:

php 实现 好友

function respondToFriendRequest($friendshipId, $response) {
    global $conn;
    $status = $response === 'accept' ? 'accepted' : 'rejected';
    $stmt = $conn->prepare("UPDATE friendships SET status = ? WHERE id = ?");
    $stmt->bind_param("si", $status, $friendshipId);
    return $stmt->execute();
}

获取好友列表

查询用户的好友列表:

function getFriendsList($userId) {
    global $conn;
    $stmt = $conn->prepare("
        SELECT u.id, u.username 
        FROM users u
        JOIN friendships f ON (u.id = f.user1_id OR u.id = f.user2_id)
        WHERE (f.user1_id = ? OR f.user2_id = ?) 
        AND f.status = 'accepted' 
        AND u.id != ?
    ");
    $stmt->bind_param("iii", $userId, $userId, $userId);
    $stmt->execute();
    return $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
}

检查好友状态

检查两个用户之间的好友关系状态:

php 实现 好友

function checkFriendshipStatus($user1Id, $user2Id) {
    global $conn;
    $stmt = $conn->prepare("
        SELECT status 
        FROM friendships 
        WHERE (user1_id = ? AND user2_id = ?) 
        OR (user1_id = ? AND user2_id = ?)
    ");
    $stmt->bind_param("iiii", $user1Id, $user2Id, $user2Id, $user1Id);
    $stmt->execute();
    $result = $stmt->get_result();
    return $result->num_rows > 0 ? $result->fetch_assoc()['status'] : null;
}

删除好友关系

移除好友关系:

function removeFriendship($user1Id, $user2Id) {
    global $conn;
    $stmt = $conn->prepare("
        DELETE FROM friendships 
        WHERE (user1_id = ? AND user2_id = ?) 
        OR (user1_id = ? AND user2_id = ?)
    ");
    $stmt->bind_param("iiii", $user1Id, $user2Id, $user2Id, $user1Id);
    return $stmt->execute();
}

前端交互示例

使用AJAX处理好友请求的前端交互:

$('#friend-request-btn').click(function() {
    $.post('friend_actions.php', {
        action: 'send_request',
        sender_id: currentUserId,
        receiver_id: targetUserId
    }, function(response) {
        alert('Friend request sent!');
    });
});

安全注意事项

实现好友系统时需考虑以下安全措施:

  • 验证用户身份和权限
  • 防止SQL注入使用预处理语句
  • 限制用户只能操作自己的好友关系
  • 对敏感操作进行CSRF保护

以上代码示例提供了PHP实现好友系统的基础框架,可根据实际需求进行扩展和优化。

标签: 好友php
分享给朋友:

相关文章

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php实现博客

php实现博客

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

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUEST_…

php实现统计

php实现统计

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