Maison > Article > développement back-end > Notification en temps réel et rappel du système de vote en ligne développé par PHP
Notifications et rappels en temps réel du système de vote en ligne développé par PHP
Dans la société moderne, les systèmes de vote en ligne sont largement utilisés dans divers scénarios, tels que la prise de décision interne à l'entreprise, les élections syndicales étudiantes, etc. Afin d'améliorer l'expérience utilisateur et l'efficacité du système de vote, nous devons souvent ajouter des fonctions de notification et de rappel en temps réel au système pour informer rapidement les participants votants des résultats du vote ou des informations importantes. Cet article expliquera comment utiliser PHP pour développer un système de vote en ligne et ajouter des fonctions de notification et de rappel en temps réel.
Tout d’abord, nous devons créer un système de vote en ligne de base. Vous pouvez utiliser un framework PHP tel que Laravel ou écrire du code PHP vous-même. Dans cet article, nous utiliserons le framework Laravel pour démontrer.
Tout d'abord, nous devons créer une base de données du système de vote. Vous pouvez utiliser phpMyAdmin ou d'autres outils de gestion de base de données pour créer une nouvelle base de données et créer des tables de vote et des tables utilisateur correspondantes.
Dans le système de vote, les utilisateurs doivent s'inscrire et se connecter avant de pouvoir participer au vote. Nous pouvons utiliser le système d'authentification fourni avec le framework Laravel pour créer rapidement des fonctions d'enregistrement et de connexion des utilisateurs. Lors de l'inscription, nous devons obtenir le numéro de téléphone portable ou l'adresse e-mail de l'utilisateur comme coordonnées.
Dans le système de vote, l'administrateur doit créer un sondage et définir les options de vote. Nous pouvons créer une table de données nommée vote pour stocker les informations de vote. Le tableau peut contenir les champs suivants :
Oui Utilisez les capacités de migration de données de Laravel pour créer des tables et des modèles de base de données.
Une fois que l'administrateur a créé le sondage, nous devons envoyer une notification à tous les utilisateurs connectés pour les informer qu'il y a un nouveau sondage auquel participer. La fonction de notification de vote peut être implémentée à l'aide d'événements et d'écouteurs dans Laravel.
Tout d'abord, nous devons créer un nouvel événement, tel que VoteCreatedEvent. L'événement peut contenir des informations de vote, ainsi que d'autres informations pertinentes nécessaires à l'envoi de notifications. Nous pouvons ensuite créer un écouteur d'événements, VoteCreatedListener, dans lequel des notifications sont envoyées à tous les utilisateurs connectés.
Ce qui suit est un exemple de code :
// VoteCreatedEvent.php namespace AppEvents; use IlluminateFoundationEventsDispatchable; use IlluminateQueueSerializesModels; class VoteCreatedEvent { use Dispatchable, SerializesModels; public $vote; public function __construct($vote) { $this->vote = $vote; } } // VoteCreatedListener.php namespace AppListeners; use AppEventsVoteCreatedEvent; use IlluminateContractsQueueShouldQueue; use IlluminateQueueInteractsWithQueue; use Notification; use AppNotificationsNewVoteNotification; class VoteCreatedListener implements ShouldQueue { use InteractsWithQueue; public function handle(VoteCreatedEvent $event) { $vote = $event->vote; $users = User::all(); Notification::send($users, new NewVoteNotification($vote)); } } // NewVoteNotification.php namespace AppNotifications; use IlluminateBusQueueable; use IlluminateContractsQueueShouldQueue; use IlluminateNotificationsMessagesMailMessage; use IlluminateNotificationsNotification; class NewVoteNotification extends Notification { use Queueable; protected $vote; public function __construct($vote) { $this->vote = $vote; } public function via($notifiable) { return ['mail']; } public function toMail($notifiable) { return (new MailMessage) ->line('新投票已发布,请尽快参与投票') ->line('投票标题:' . $this->vote->title) ->action('立即参与', url('/vote/' . $this->vote->id)) ->line('感谢您的参与!'); } }
Dans le code ci-dessus, VoteCreatedEvent représente l'événement de création de vote, VoteCreatedListener est l'écouteur de l'événement de vote et NewVoteNotification est les informations de notification envoyées. Nous utilisons la classe Notification de Laravel dans VoteCreatedListener pour envoyer des notifications par e-mail à tous les utilisateurs connectés. Le contenu de la notification inclut le titre du vote et le lien de participation.
Une fois que les utilisateurs ont reçu la notification de vote, ils peuvent visiter la page de vote en cliquant sur le lien dans la notification pour effectuer des opérations de vote. Nous pouvons ajouter une fonction de mise à jour en temps réel à la page de vote pour afficher les résultats du vote actuel en temps opportun.
Vous pouvez utiliser la fonction de diffusion de Laravel pour obtenir une fonctionnalité de mise à jour en temps réel. Tout d'abord, nous devons configurer le pilote et le canal de diffusion de Laravel. Nous pouvons ensuite utiliser la bibliothèque Echo de Laravel pour nous abonner au canal de vote et utiliser le code JavaScript dans la page pour mettre à jour les résultats du vote en temps réel.
Ce qui suit est un exemple de code :
// resources/js/app.js import Echo from 'laravel-echo'; window.io = require('socket.io-client'); window.Echo = new Echo({ broadcaster: 'socket.io', host: 'http://localhost:6001', });
// routes/channels.php use IlluminateSupportFacadesBroadcast; Broadcast::channel('vote.{voteId}', function ($user, $voteId) { return true; });
// VoteController.php namespace AppHttpControllers; use IlluminateHttpRequest; use AppModelsVote; class VoteController extends Controller { public function show($id) { $vote = Vote::findOrFail($id); return view('vote.show', ['vote' => $vote]); } }
<!-- resources/views/vote/show.blade.php --> <!DOCTYPE html> <html> <head> <title>投票</title> <script src="{{ asset('js/app.js') }}"></script> </head> <body> <h1>{{ $vote->title }}</h1> <p>{{ $vote->description }}</p> <ul> @foreach($vote->options as $option) <li>{{ $option }}</li> @endforeach </ul> <script> window.Echo.channel('vote.{{ $vote->id }}') .listen('.vote.updated', (data) => { console.log(data); // 更新投票结果的显示 }); </script> </body> </html>
Dans le code ci-dessus, nous compilons le code JavaScript dans la page de vote via Laravel Mix et l'introduisons dans la page. Lorsque la page se charge, nous utilisons la bibliothèque Echo pour nous abonner au canal de vote (vote.{voteId}) et écouter l'événement .vote.updated. Lorsque les résultats du vote seront mis à jour, la page recevra les données mises à jour et les affichera en conséquence.
Grâce aux étapes ci-dessus, nous avons ajouté avec succès les fonctions de notification et de rappel en temps réel du système de vote en ligne. Les utilisateurs peuvent recevoir des notifications de vote en temps réel dans le système et consulter instantanément les résultats du vote. Un tel système améliore non seulement l’expérience utilisateur, mais améliore également l’efficacité et l’équité du vote.
En résumé, nous avons ajouté avec succès des fonctions de notification et de rappel en temps réel au système de vote en ligne développé avec PHP, et fourni des exemples de code correspondants. Cette fonction permet non seulement aux utilisateurs de se tenir au courant des dernières informations de vote, mais également d'obtenir les résultats du vote en temps réel, apportant ainsi commodité et équité au processus de vote.
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!