当前位置:首页 > 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();
}

接受或拒绝好友请求

处理好友请求的响应:

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);
}

检查好友状态

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

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 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE T…

php实现异步

php实现异步

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