当前位置:首页 > PHP

php 实现站内短信

2026-02-16 10:18:10PHP

实现站内短信功能

站内短信功能通常包括发送、接收、存储和显示消息。以下是实现站内短信功能的关键步骤:

数据库设计

创建数据库表存储消息数据,表结构可以设计如下:

php 实现站内短信

CREATE TABLE messages (
    id INT AUTO_INCREMENT PRIMARY KEY,
    sender_id INT NOT NULL,
    receiver_id INT NOT NULL,
    subject VARCHAR(255),
    content TEXT,
    is_read BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (sender_id) REFERENCES users(id),
    FOREIGN KEY (receiver_id) REFERENCES users(id)
);

发送消息功能

创建表单和处理脚本实现消息发送:

// 发送表单
<form action="send_message.php" method="post">
    <input type="hidden" name="sender_id" value="<?php echo $_SESSION['user_id']; ?>">
    收件人: <input type="text" name="receiver_id"><br>
    主题: <input type="text" name="subject"><br>
    内容: <textarea name="content"></textarea><br>
    <button type="submit">发送</button>
</form>

// send_message.php
<?php
$senderId = $_POST['sender_id'];
$receiverId = $_POST['receiver_id'];
$subject = $_POST['subject'];
$content = $_POST['content'];

$stmt = $pdo->prepare("INSERT INTO messages (sender_id, receiver_id, subject, content) VALUES (?, ?, ?, ?)");
$stmt->execute([$senderId, $receiverId, $subject, $content]);

header("Location: inbox.php");
exit;
?>

收件箱功能

显示用户收到的消息:

php 实现站内短信

<?php
$userId = $_SESSION['user_id'];
$stmt = $pdo->prepare("SELECT m.*, u.username as sender_name FROM messages m 
                      JOIN users u ON m.sender_id = u.id 
                      WHERE m.receiver_id = ? ORDER BY m.created_at DESC");
$stmt->execute([$userId]);
$messages = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($messages as $message) {
    echo "<div class='message" . ($message['is_read'] ? '' : ' unread') . "'>";
    echo "<h3>{$message['subject']}</h3>";
    echo "<p>来自: {$message['sender_name']}</p>";
    echo "<p>{$message['content']}</p>";
    echo "<small>" . date('Y-m-d H:i', strtotime($message['created_at'])) . "</small>";
    echo "</div>";
}
?>

标记为已读

当用户查看消息时更新已读状态:

<?php
$messageId = $_GET['id'];
$stmt = $pdo->prepare("UPDATE messages SET is_read = TRUE WHERE id = ?");
$stmt->execute([$messageId]);

// 然后显示消息内容...
?>

消息计数

显示未读消息数量:

<?php
$userId = $_SESSION['user_id'];
$stmt = $pdo->prepare("SELECT COUNT(*) FROM messages WHERE receiver_id = ? AND is_read = FALSE");
$stmt->execute([$userId]);
$unreadCount = $stmt->fetchColumn();

echo "未读消息: $unreadCount";
?>

安全注意事项

  • 验证用户身份,确保只能查看自己的消息
  • 对输入数据进行过滤和验证,防止SQL注入
  • 对敏感操作使用CSRF令牌
  • 考虑实现消息删除功能

性能优化

  • 对大量消息实现分页功能
  • 添加适当的数据库索引
  • 考虑使用缓存减少数据库查询

以上实现提供了站内短信的基本功能框架,可以根据实际需求进行扩展和优化。

标签: 站内短信
分享给朋友:

相关文章

vue实现站内信

vue实现站内信

Vue 实现站内信功能 前端实现 组件结构设计 创建 MessageList.vue 和 MessageDetail.vue 组件,分别用于展示消息列表和消息详情。使用 Vue Router 实现页面…

php实现短信验证

php实现短信验证

PHP实现短信验证的步骤 选择合适的短信服务提供商 国内常见的短信服务提供商包括阿里云短信、腾讯云短信、云片等。注册账号并获取API密钥和签名模板是第一步。这些平台通常提供详细的开发文档和SDK。…

react实现短信验证注册

react实现短信验证注册

实现短信验证注册的步骤 后端API准备 确保已有发送短信验证码的API接口,通常需要手机号作为参数,返回成功或失败状态。验证码应由服务端生成并存储(如Redis),设置合理有效期(如5分钟)。 前…

php站内信实现

php站内信实现

PHP 站内信功能实现 站内信功能通常包括发送、接收、查看和删除消息等基本操作。以下是实现站内信功能的详细方法: 数据库设计 创建两个表:users(用户表)和messages(站内信表)。…

php实现站内私信功能

php实现站内私信功能

实现站内私信功能 站内私信功能需要数据库设计、用户交互逻辑和消息管理。以下是实现的关键步骤: 数据库设计 创建两个表:users(用户表)和messages(私信表)。messages表结构如下:…

php实现站内公告

php实现站内公告

PHP 实现站内公告的方法 数据库设计 创建一个公告表(例如 announcements),包含字段如 id、title、content、created_at 和 is_active。is_activ…