Utiliser PHP et WebSocket pour développer la fonction de vote en ligne
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.
Afin de mettre en œuvre la fonction de vote en ligne, nous devons répondre à la configuration système suivante :
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 :
Les étapes suivantes seront suivies pour implémenter la fonction de vote en ligne :
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`) );
É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();
É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>
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();
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!