php实现邀请组队
PHP 实现邀请组队功能
邀请组队功能通常涉及用户生成邀请链接、发送邀请、验证邀请码以及处理加入逻辑。以下是实现这一功能的关键步骤:
生成唯一邀请码
使用 uniqid 或 md5 生成唯一邀请码,并存储在数据库中:

$inviteCode = md5(uniqid(rand(), true));
// 存储到数据库
$sql = "INSERT INTO team_invites (team_id, invite_code, created_by, expires_at) VALUES (?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$teamId, $inviteCode, $userId, date('Y-m-d H:i:s', strtotime('+7 days'))]);
发送邀请链接
生成包含邀请码的URL并通过邮件或消息发送:
$inviteUrl = "https://example.com/join?code=" . urlencode($inviteCode);
// 使用邮件库(如PHPMailer)发送
$mail->Body = "Join our team: " . $inviteUrl;
$mail->send();
验证邀请码
用户访问链接时验证邀请码的有效性:

$code = $_GET['code'] ?? '';
$sql = "SELECT * FROM team_invites WHERE invite_code = ? AND expires_at > NOW()";
$stmt = $pdo->prepare($sql);
$stmt->execute([$code]);
$invite = $stmt->fetch();
if (!$invite) {
die("Invalid or expired invite code");
}
处理加入逻辑
验证通过后将用户加入团队:
$sql = "INSERT INTO team_members (team_id, user_id, joined_at) VALUES (?, ?, NOW())";
$stmt = $pdo->prepare($sql);
$stmt->execute([$invite['team_id'], $currentUserId]);
// 可选:标记邀请码为已使用
$sql = "UPDATE team_invites SET used = 1 WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$invite['id']]);
数据库表结构示例
创建以下表存储邀请和团队数据:
CREATE TABLE team_invites (
id INT AUTO_INCREMENT PRIMARY KEY,
team_id INT NOT NULL,
invite_code VARCHAR(64) NOT NULL UNIQUE,
created_by INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
expires_at DATETIME NOT NULL,
used TINYINT DEFAULT 0
);
CREATE TABLE team_members (
id INT AUTO_INCREMENT PRIMARY KEY,
team_id INT NOT NULL,
user_id INT NOT NULL,
joined_at DATETIME NOT NULL,
UNIQUE KEY (team_id, user_id)
);
安全注意事项
- 对邀请码进行URL编码防止注入
- 使用HTTPS确保邀请链接安全
- 限制每个用户生成的邀请码数量
- 设置合理的过期时间(通常7-30天)






