Echtzeitbenachrichtigungen und Erinnerungen des von PHP entwickelten Online-Abstimmungssystems
In der modernen Gesellschaft werden Online-Abstimmungssysteme häufig in verschiedenen Szenarien eingesetzt, z. B. bei unternehmensinternen Entscheidungen, Studentenwerkswahlen usw. Um das Benutzererlebnis und die Effizienz des Abstimmungssystems zu verbessern, müssen wir dem System häufig Echtzeit-Benachrichtigungs- und Erinnerungsfunktionen hinzufügen, um Abstimmungsteilnehmer umgehend über Abstimmungsergebnisse oder wichtige Informationen zu informieren. In diesem Artikel wird erläutert, wie Sie mit PHP ein Online-Abstimmungssystem entwickeln und Echtzeit-Benachrichtigungs- und Erinnerungsfunktionen hinzufügen.
Zuerst müssen wir ein grundlegendes Online-Abstimmungssystem aufbauen. Sie können ein PHP-Framework wie Laravel verwenden oder selbst PHP-Code schreiben. In diesem Artikel verwenden wir zur Demonstration das Laravel-Framework.
Zuerst müssen wir eine Datenbank des Abstimmungssystems erstellen. Sie können phpMyAdmin oder andere Datenbankverwaltungstools verwenden, um eine neue Datenbank zu erstellen und entsprechende Abstimmungstabellen und Benutzertabellen zu erstellen.
Im Abstimmungssystem müssen sich Benutzer registrieren und anmelden, bevor sie an der Abstimmung teilnehmen können. Wir können das mit dem Laravel-Framework gelieferte Authentifizierungssystem verwenden, um schnell Benutzerregistrierungs- und Anmeldefunktionen zu erstellen. Bei der Registrierung benötigen wir als Kontaktinformationen die Mobiltelefonnummer oder E-Mail-Adresse des Nutzers.
Im Abstimmungssystem muss der Administrator eine Umfrage erstellen und Abstimmungsoptionen festlegen. Wir können eine Datentabelle mit dem Namen „vote“ erstellen, um Abstimmungsinformationen zu speichern. Die Tabelle kann folgende Felder enthalten:
Ja. Verwenden Sie die Datenmigrationsfunktion von Laravel, um Datenbanktabellen und -modelle zu erstellen.
Nachdem der Administrator die Umfrage erstellt hat, müssen wir eine Benachrichtigung an alle angemeldeten Benutzer senden, um sie darüber zu informieren, dass es eine neue Umfrage gibt, an der sie teilnehmen können. Die Abstimmungsbenachrichtigungsfunktion kann mithilfe von Ereignissen und Listenern in Laravel implementiert werden.
Zuerst müssen wir ein neues Ereignis erstellen, z. B. VoteCreatedEvent. Das Ereignis kann Abstimmungsinformationen sowie andere relevante Informationen enthalten, die zum Versenden von Benachrichtigungen erforderlich sind. Anschließend können wir einen Ereignis-Listener namens VoteCreatedListener erstellen, in dem Benachrichtigungen an alle angemeldeten Benutzer gesendet werden.
Das Folgende ist ein Beispielcode:
// 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('感谢您的参与!'); } }
Im obigen Code stellt VoteCreatedEvent das Abstimmungserstellungsereignis dar, VoteCreatedListener ist der Listener für das Abstimmungsereignis und NewVoteNotification sind die gesendeten Benachrichtigungsinformationen. Wir verwenden die Notification-Klasse von Laravel in VoteCreatedListener, um E-Mail-Benachrichtigungen an alle angemeldeten Benutzer zu senden. Der Benachrichtigungsinhalt umfasst den Abstimmungstitel und den Teilnahmelink.
Nachdem Benutzer die Abstimmungsbenachrichtigung erhalten haben, können sie die Abstimmungsseite besuchen, indem sie auf den Link in der Benachrichtigung klicken, um Abstimmungsvorgänge durchzuführen. Wir können der Abstimmungsseite eine Echtzeit-Aktualisierungsfunktion hinzufügen, um die aktuellen Abstimmungsergebnisse zeitnah anzuzeigen.
Sie können die Broadcasting-Funktion von Laravel verwenden, um eine Aktualisierungsfunktion in Echtzeit zu erreichen. Zuerst müssen wir den Broadcast-Treiber und den Kanal von Laravel konfigurieren. Anschließend können wir die Echo-Bibliothek von Laravel verwenden, um den Abstimmungskanal zu abonnieren und JavaScript-Code auf der Seite verwenden, um die Abstimmungsergebnisse in Echtzeit zu aktualisieren.
Das Folgende ist ein Beispielcode:
// 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>
Im obigen Code kompilieren wir den JavaScript-Code auf der Abstimmungsseite über Laravel Mix und führen ihn in die Seite ein. Wenn die Seite geladen wird, verwenden wir die Echo-Bibliothek, um den Abstimmungskanal (vote.{voteId}) zu abonnieren und das .vote.updated-Ereignis abzuhören. Wenn die Abstimmungsergebnisse aktualisiert werden, empfängt die Seite die aktualisierten Daten und zeigt sie entsprechend an.
Durch die oben genannten Schritte haben wir die Echtzeit-Benachrichtigungs- und Erinnerungsfunktionen des Online-Abstimmungssystems erfolgreich hinzugefügt. Benutzer können Abstimmungsbenachrichtigungen in Echtzeit im System erhalten und die Abstimmungsergebnisse sofort einsehen. Ein solches System verbessert nicht nur das Benutzererlebnis, sondern auch die Effizienz und Fairness der Abstimmung.
Zusammenfassend lässt sich sagen, dass wir das mit PHP entwickelte Online-Abstimmungssystem erfolgreich um Echtzeit-Benachrichtigungs- und Erinnerungsfunktionen erweitert und entsprechende Codebeispiele bereitgestellt haben. Mit dieser Funktion bleiben Benutzer nicht nur über die neuesten Abstimmungsinformationen auf dem Laufenden, sondern erhalten auch Abstimmungsergebnisse in Echtzeit, was den Abstimmungsprozess komfortabler und fairer macht.
Das obige ist der detaillierte Inhalt vonEchtzeitbenachrichtigung und Erinnerung an das von PHP entwickelte Online-Abstimmungssystem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!