插件窝 干货文章 php怎么实现多对一通讯录

php怎么实现多对一通讯录

联系人 用户 contacts user 858    来源:    2025-03-18

在PHP中实现多对一通讯录(即多个用户可以共享同一个联系人)可以通过数据库设计来实现。以下是一个简单的实现思路:

1. 数据库设计

你需要设计两个表:users 表和 contacts 表。users 表存储用户信息,contacts 表存储联系人信息,并通过外键关联到 users 表。

users

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

contacts

CREATE TABLE contacts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    name VARCHAR(100) NOT NULL,
    phone VARCHAR(20) NOT NULL,
    email VARCHAR(100),
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

2. PHP代码实现

接下来,你可以通过PHP代码来实现多对一通讯录的功能。

添加联系人

<?php
// 假设你已经连接到数据库
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');

// 获取当前用户ID(假设用户已登录)
$user_id = $_SESSION['user_id'];

// 获取表单数据
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];

// 插入联系人
$stmt = $pdo->prepare("INSERT INTO contacts (user_id, name, phone, email) VALUES (:user_id, :name, :phone, :email)");
$stmt->execute([
    ':user_id' => $user_id,
    ':name' => $name,
    ':phone' => $phone,
    ':email' => $email
]);

echo "联系人添加成功!";
?>

查看联系人

<?php
// 假设你已经连接到数据库
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');

// 获取当前用户ID(假设用户已登录)
$user_id = $_SESSION['user_id'];

// 查询当前用户的联系人
$stmt = $pdo->prepare("SELECT * FROM contacts WHERE user_id = :user_id");
$stmt->execute([':user_id' => $user_id]);
$contacts = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 显示联系人
foreach ($contacts as $contact) {
    echo "姓名: " . $contact['name'] . "<br>";
    echo "电话: " . $contact['phone'] . "<br>";
    echo "邮箱: " . $contact['email'] . "<br><br>";
}
?>

3. 共享联系人

如果你希望多个用户可以共享同一个联系人,可以在 contacts 表中添加一个 shared 字段,表示该联系人是否可以被共享。

修改 contacts

ALTER TABLE contacts ADD COLUMN shared BOOLEAN DEFAULT FALSE;

共享联系人

<?php
// 假设你已经连接到数据库
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');

// 获取当前用户ID(假设用户已登录)
$user_id = $_SESSION['user_id'];

// 获取联系人ID
$contact_id = $_POST['contact_id'];

// 标记联系人为共享
$stmt = $pdo->prepare("UPDATE contacts SET shared = TRUE WHERE id = :contact_id AND user_id = :user_id");
$stmt->execute([
    ':contact_id' => $contact_id,
    ':user_id' => $user_id
]);

echo "联系人已共享!";
?>

查看共享联系人

<?php
// 假设你已经连接到数据库
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');

// 获取当前用户ID(假设用户已登录)
$user_id = $_SESSION['user_id'];

// 查询共享联系人
$stmt = $pdo->prepare("SELECT * FROM contacts WHERE shared = TRUE");
$stmt->execute();
$shared_contacts = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 显示共享联系人
foreach ($shared_contacts as $contact) {
    echo "姓名: " . $contact['name'] . "<br>";
    echo "电话: " . $contact['phone'] . "<br>";
    echo "邮箱: " . $contact['email'] . "<br><br>";
}
?>

4. 安全性考虑

在实际应用中,你需要考虑以下几点: - 用户认证:确保只有登录用户才能访问和操作联系人。 - 输入验证:对用户输入的数据进行验证,防止SQL注入等安全问题。 - 权限控制:确保用户只能操作自己的联系人,除非联系人被共享。

总结

通过上述步骤,你可以在PHP中实现一个简单的多对一通讯录系统。用户可以通过共享联系人功能,让其他用户也能访问特定的联系人信息。