Maison  >  Article  >  développement back-end  >  Développer une fonction de vote en ligne en utilisant php et Websocket

Développer une fonction de vote en ligne en utilisant php et Websocket

WBOY
WBOYoriginal
2023-12-02 08:50:17609parcourir

Développer une fonction de vote en ligne en utilisant php et Websocket

Utiliser PHP et WebSocket pour développer la fonction de vote en ligne

Introduction

Avec le développement rapide d'Internet, de plus en plus d'activités traditionnelles ont progressivement migré vers les plateformes en ligne. L’un d’eux est la campagne électorale. En utilisant la combinaison des technologies PHP et WebSocket, nous pouvons mettre en œuvre une fonction de vote en ligne simple et pratique. Cet article expliquera comment développer un système de vote en ligne complet à l'aide de PHP et WebSocket, et fournira quelques exemples de code spécifiques.

Exigences du système

Afin de mettre en œuvre la fonction de vote en ligne, nous devons répondre à la configuration système suivante :

  1. Environnement du serveur : PHP 7.0 ou supérieur, prenant en charge les extensions WebSocket, telles que les extensions swoole.
  2. Navigateur client : navigateur prenant en charge HTML5, tel que Chrome, Firefox, etc.

Conception de l'architecture

Avant de concevoir le système de vote en ligne, nous devons déterminer certaines fonctions clés et méthodes de mise en œuvre :

  1. Stockage des données : utilisez une base de données (telle que MySQL) pour stocker les données liées au vote, y compris les options de vote et les statistiques de vote attendent.
  2. Serveur WebSocket : utilisez l'extension WebSocket de PHP (telle que swoole) comme serveur pour recevoir les demandes de connexion client et les messages envoyés.
  3. Client WebSocket : client WebSocket écrit en JavaScript, utilisé pour la communication en temps réel avec le serveur.
  4. Interface utilisateur : utilisez HTML, CSS et JavaScript pour implémenter l'interface utilisateur permettant d'afficher les options de vote et l'affichage en temps réel des statistiques de vote.

Étapes de mise en œuvre

Les étapes suivantes seront suivies pour implémenter la fonction de vote en ligne :

  1. Créer une table de base de données
    Créez une table dans MySQL pour stocker les options de vote. La structure de la table est la suivante :

    CREATE TABLE `voting_options` (
     `id` int(11) NOT NULL AUTO_INCREMENT,
     `option_name` varchar(255) NOT NULL,
     `vote_count` int(11) NOT NULL DEFAULT '0',
     PRIMARY KEY (`id`)
    );
  2. .

    Écrivez le code du serveur
    Vous devez d'abord installer l'extension swoole, puis créer un serveur WebSocket et écouter le port spécifié. Lorsqu'une nouvelle connexion est établie, obtenez l'ID d'option de vote du client et mettez à jour le nombre de votes pour l'option correspondante dans la base de données. L'exemple de code est le suivant :

    <?php
    // 创建WebSocket服务器
    $server = new SwooleWebSocketServer('0.0.0.0', 9501);
    
    // 当有新的连接建立时
    $server->on('open', function ($server, $request) {
        // 解析请求中的投票选项ID
        $optionId = $_GET['option_id'];
    
        // 更新数据库中对应选项的投票数量
    
        // 推送投票统计结果给所有已连接的客户端
    });
    
    // 启动服务器
    $server->start();
  3. Écrivez le code client
    En HTML, ajoutez un bouton pour l'option de vote et utilisez JavaScript pour créer une connexion WebSocket afin d'écouter les messages envoyés par le serveur. Lorsque vous cliquez sur le bouton, utilisez WebSocket pour envoyer l'ID de l'option de vote au serveur. L'exemple de code est le suivant :

    <html>
    <head>
        <!-- 引入jQuery库 -->
        <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    </head>
    <body>
        <!-- 添加投票选项的按钮 -->
        <button id="option1" onclick="vote(1)">选项1</button>
        <button id="option2" onclick="vote(2)">选项2</button>
        <button id="option3" onclick="vote(3)">选项3</button>
    
        <!-- 引入WebSocket客户端代码 -->
        <script>
            // 创建WebSocket连接
            var socket = new WebSocket('ws://localhost:9501');
    
            // 监听服务端的消息推送
            socket.onmessage = function(event) {
                // 更新投票统计结果
            };
    
            // 投票函数
            function vote(optionId) {
                // 发送投票选项ID给服务端
            }
        </script>
    </body>
    </html>
  4. Mettre à jour la base de données et pousser les statistiques de vote
    Dans le code du serveur, en fonction de l'ID de l'option de vote reçu, mettre à jour le nombre de votes pour l'option correspondante dans la base de données. Ensuite, transmettez les résultats des statistiques de vote à tous les clients connectés via WebSocket. L'exemple de code est le suivant :

    <?php
    // 创建WebSocket服务器
    $server = new SwooleWebSocketServer('0.0.0.0', 9501);
    
    // 当有新的连接建立时
    $server->on('open', function ($server, $request) {
        // 解析请求中的投票选项ID
        $optionId = $_GET['option_id'];
    
        // 更新数据库中对应选项的投票数量
        $optionId = intval($optionId);
        $result = mysqli_query($conn, "UPDATE voting_options SET vote_count = vote_count + 1 WHERE id = $optionId");
        if ($result) {
            // 推送投票统计结果给所有已连接的客户端
            $votingLiveData = getVotingLiveData(); // 获取投票统计数据
            $server->push($request->fd, $votingLiveData); // 发送投票统计数据给当前客户端
            $server->push($request->fd, $votingLiveData, WEBSOCKET_OPCODE_BINARY);
        }
    });
    
    // 启动服务器
    $server->start();

Résumé

Cet article présente comment développer une fonction de vote en ligne simple à l'aide de PHP et WebSocket. En utilisant PHP comme serveur, HTML, CSS et JavaScript pour implémenter l'interface utilisateur et WebSocket pour la communication en temps réel, nous pouvons implémenter un système de vote en ligne qui met à jour les statistiques de vote en temps réel. Il convient de noter que cet exemple de code n'est qu'un exemple simple. Dans des situations réelles, certains ajustements et optimisations peuvent être nécessaires en fonction de besoins spécifiques. J'espère que cet article pourra être utile pour développer les capacités de vote en ligne.

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