当前位置:首页 > PHP

php实现好友列表

2026-02-16 18:05:18PHP

实现好友列表功能

在PHP中实现好友列表功能通常涉及数据库设计、用户关系管理以及前端展示。以下是实现好友列表的关键步骤和代码示例。

数据库设计

创建两个表:users存储用户信息,friendships存储好友关系。

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,
    user_id INT NOT NULL,
    friend_id INT NOT NULL,
    status ENUM('pending', 'accepted') DEFAULT 'pending',
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (friend_id) REFERENCES users(id)
);

添加好友

使用PHP处理好友请求,插入数据到friendships表。

<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');

// 添加好友
$userId = 1; // 当前用户ID
$friendId = 2; // 好友用户ID

$stmt = $db->prepare("INSERT INTO friendships (user_id, friend_id, status) VALUES (?, ?, 'pending')");
$stmt->execute([$userId, $friendId]);
?>

查询好友列表

查询当前用户的好友列表,包括已接受的好友请求。

<?php
// 查询好友列表
$userId = 1; // 当前用户ID

$stmt = $db->prepare("
    SELECT u.id, u.username 
    FROM users u 
    JOIN friendships f ON u.id = f.friend_id 
    WHERE f.user_id = ? AND f.status = 'accepted'
    UNION
    SELECT u.id, u.username 
    FROM users u 
    JOIN friendships f ON u.id = f.user_id 
    WHERE f.friend_id = ? AND f.status = 'accepted'
");
$stmt->execute([$userId, $userId]);
$friends = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 输出好友列表
foreach ($friends as $friend) {
    echo $friend['username'] . "<br>";
}
?>

处理好友请求

更新好友请求状态为accepted

<?php
// 接受好友请求
$friendshipId = 1; // 好友关系ID

$stmt = $db->prepare("UPDATE friendships SET status = 'accepted' WHERE id = ?");
$stmt->execute([$friendshipId]);
?>

删除好友

friendships表中删除好友关系。

<?php
// 删除好友
$friendshipId = 1; // 好友关系ID

$stmt = $db->prepare("DELETE FROM friendships WHERE id = ?");
$stmt->execute([$friendshipId]);
?>

前端展示

使用HTML和PHP结合展示好友列表。

<!DOCTYPE html>
<html>
<head>
    <title>好友列表</title>
</head>
<body>
    <h1>好友列表</h1>
    <ul>
        <?php foreach ($friends as $friend): ?>
            <li><?php echo $friend['username']; ?></li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

安全性考虑

确保所有数据库操作使用预处理语句防止SQL注入。对于用户输入的数据,进行验证和过滤。

// 示例:过滤用户输入
$friendId = filter_input(INPUT_POST, 'friend_id', FILTER_VALIDATE_INT);
if ($friendId === false) {
    die('无效的用户ID');
}

性能优化

对于大型用户系统,考虑使用索引优化查询性能。

CREATE INDEX idx_friendships_user_id ON friendships(user_id);
CREATE INDEX idx_friendships_friend_id ON friendships(friend_id);

通过以上步骤,可以实现一个基本的好友列表功能,包括添加、查询、接受和删除好友。根据实际需求,可以进一步扩展功能,如分页显示好友列表或添加好友搜索功能。

php实现好友列表

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

相关文章

php实现文件上传

php实现文件上传

文件上传的基本实现 在PHP中实现文件上传需要使用$_FILES超全局数组处理上传的文件数据。表单必须设置enctype="multipart/form-data"属性,并采用POST方法提交。…

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…

php队列的实现

php队列的实现

PHP队列的实现方式 PHP中实现队列功能可以通过多种方式,根据需求选择适合的方案: 使用数组实现基础队列 PHP数组本身支持队列操作,利用array_push和array_shift函数:…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php实现mvc

php实现mvc

PHP 实现 MVC 架构 MVC(Model-View-Controller)是一种常用的软件设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller…