Maison >développement back-end >tutoriel php >Implémenter la fonction de salle de discussion en utilisant PHP

Implémenter la fonction de salle de discussion en utilisant PHP

WBOY
WBOYoriginal
2023-06-22 22:58:452297parcourir

Aujourd'hui, avec la popularisation d'Internet, la communication en temps réel est devenue un élément indispensable de la vie quotidienne des gens, et les forums de discussion, en tant que méthode de communication collective, sont de plus en plus acceptés et utilisés par tous. Cet article explique comment utiliser PHP pour implémenter une fonction simple de salle de discussion.

  1. Déterminer les besoins

Avant de commencer à écrire un programme, nous devons d'abord clarifier nos besoins. Une salle de discussion simple doit avoir les fonctions de base suivantes :

  • Les utilisateurs peuvent s'inscrire, se connecter et se déconnecter
  • Les utilisateurs peuvent consulter l'historique des enregistrements de discussion ;
  • Les utilisateurs peuvent envoyer des messages et ils seront affichés instantanément sur la page ; d'autres utilisateurs en ligne.
  1. Concevoir la base de données

Avant d'implémenter la fonction de salon de discussion, nous devons d'abord concevoir la structure de table de base de données appropriée. Les tables de base de données requises pour une salle de discussion simple peuvent inclure les éléments suivants :

  • Table des utilisateurs : enregistre le nom d'utilisateur, le mot de passe, l'heure d'inscription et d'autres informations ;
  • Table des enregistrements de discussion : enregistre tous les enregistrements de discussion dans la salle de discussion ;
  • Tableau des utilisateurs en ligne : enregistre toutes les informations sur les utilisateurs actuellement en ligne.
    Écrire du code PHP
Ensuite, vous pouvez commencer à écrire du code PHP. Nous pouvons le diviser en les étapes suivantes :

3.1 Connectez-vous à la base de données

Vous devez d'abord vous connecter à la base de données de code PHP précédemment conçue. Utilisez simplement la bibliothèque mysqli fournie par PHP. Le code de connexion est le suivant :

$mysqli = new mysqli("localhost", "root", "password", "chatroom");
if ($mysqli->connect_error) {
    die("连接失败: " . $mysqli->connect_error);
}

Ici "localhost" est l'adresse hôte de la base de données, "root" est le nom d'utilisateur de la base de données, "password" est le mot de passe de la base de données, et " chatroom" est le nom de la base de données. Vous devez le modifier en fonction de votre propre situation.

3.2 Enregistrement, connexion et déconnexion des utilisateurs

L'enregistrement, la connexion et la déconnexion des utilisateurs sont la base de la fonction de salle de discussion. Présentons-les respectivement ci-dessous.

3.2.1 Inscription des utilisateurs

Les utilisateurs doivent renseigner leur nom d'utilisateur et leur mot de passe lors de leur inscription. Nous devons imposer certaines restrictions sur les noms d'utilisateur et les mots de passe, telles que les noms d'utilisateur ne peuvent pas être répétés, les mots de passe doivent être cryptés, etc. Le code est le suivant :

// 判断用户名是否已存在
$query = "SELECT * FROM users WHERE username='$username'";
$result = $mysqli->query($query);
if ($result->num_rows > 0) {
    echo '该用户名已被注册,请重新选择用户名!';
    return;
}

// 使用 sha1 对密码进行加密
$password_hash = sha1($password);

// 将加密后的密码和用户信息插入到用户表中
$add_time = date("Y-m-d H:i:s");
$query = "INSERT INTO users (username, password, add_time) VALUES ('$username', '$password_hash', '$add_time')";
if ($mysqli->query($query) === TRUE) {
    echo '注册成功!';
} else {
    echo '注册失败!';
}

3.2.2 Connexion utilisateur

Les utilisateurs doivent saisir le nom d'utilisateur et le mot de passe corrects lors de la connexion pour se connecter avec succès. Une fois la connexion réussie, les informations utilisateur doivent être enregistrées dans le tableau des utilisateurs en ligne pour une utilisation ultérieure. Le code est le suivant :

$query = "SELECT * FROM users WHERE username='$username' AND password='".sha1($password)."'";
$result = $mysqli->query($query);
if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    $user_id = $row['id'];
    $online_time = date("Y-m-d H:i:s");
    $query = "INSERT INTO online_users (user_id, online_time) VALUES ('$user_id', '$online_time')";
    if ($mysqli->query($query) === TRUE) {
        echo '登录成功!';
    } else {
        echo '登录失败!';
    }
} else {
    echo '用户名或密码错误,请重新输入!';
}

3.2.3 Sortie utilisateur

Lorsque l'utilisateur quitte, l'enregistrement utilisateur correspondant dans la table des utilisateurs en ligne doit être supprimé. Le code est le suivant :

$online_time = date("Y-m-d H:i:s");
$query = "DELETE FROM online_users WHERE user_id='$user_id'";
if ($mysqli->query($query) === TRUE) {
    echo '退出成功!';
} else {
    echo '退出失败!';
}

3.3 Afficher les enregistrements de discussion historiques

Dans la salle de discussion, les utilisateurs peuvent consulter les enregistrements de discussion historiques. Nous pouvons lire plusieurs enregistrements récents du tableau des enregistrements de discussion et les afficher sur la page. Le code est le suivant :

$query = "SELECT * FROM chat_records ORDER BY id DESC LIMIT 50";
$result = $mysqli->query($query);
echo '<div class="chat-history">';
while ($row = $result->fetch_assoc()) {
    echo '<div class="chat-message">';
    echo '<span class="message-name">'.$row['username'].'</span>';
    echo '<span class="message-time">'.$row['add_time'].'</span><br>';
    echo '<span class="message-text">'.$row['message'].'</span>';
    echo '</div>';
}
echo '</div>';

Dans le code ci-dessus, nous utilisons des styles CSS pour embellir l'effet d'affichage des enregistrements de discussion, nous n'entrerons donc pas dans les détails ici.

3.4 Implémentation de la messagerie instantanée

La mise en œuvre de la messagerie instantanée nécessite l'utilisation de la technologie Ajax, ce qui signifie une interaction des données avec le serveur sans rafraîchir la page. Nous pouvons réaliser la fonction de messagerie instantanée en saisissant un message dans la zone de saisie du chat et en l'envoyant au serveur via Ajax. Le code est le suivant :

// 客户端通过Ajax发送消息到服务器
$(".chat-input").keypress(function(event) {
    if (event.which == 13) {
        var message = $(this).val().trim();
        if (message != '') {
            $.post("send_message.php", {
                message: message
            }, function(data, status) {
                if (data == 'ok') {
                    $(".chat-input").val('');
                } else {
                    alert('消息发送失败!');
                }
            });
        }
    }
});

// 服务器接收到消息后将消息存储到聊天记录表中
$message = $_POST['message'];
$add_time = date("Y-m-d H:i:s");
$query = "INSERT INTO chat_records (username, message, add_time) VALUES ('$username', '$message', '$add_time')";
if ($mysqli->query($query) === TRUE) {
    echo 'ok';
} else {
    echo 'error';
}

Dans le code ci-dessus, nous envoyons le message dans la zone de saisie du chat au serveur via Ajax et stockons le message dans la table d'enregistrement du chat côté serveur. De cette façon, les autres utilisateurs en ligne peuvent voir instantanément les messages envoyés dans la salle de discussion.

    Résumé
Cet article explique comment utiliser PHP pour écrire une fonction de salle de discussion simple, comprenant l'enregistrement, la connexion et la sortie des utilisateurs, l'affichage des enregistrements de discussion historiques et la mise en œuvre de la messagerie instantanée et d'autres fonctions courantes. En tant que méthode de communication collective, les forums de discussion permettent aux utilisateurs de communiquer plus facilement sur Internet. Bien entendu, dans les applications pratiques, nous devons également prendre en compte davantage de facteurs tels que la sécurité et la stabilité. Ce n'est qu'un exemple simple.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn