ホームページ  >  記事  >  バックエンド開発  >  PHPが開発したオンライン投票システムのリアルタイム通知とリマインダー

PHPが開発したオンライン投票システムのリアルタイム通知とリマインダー

WBOY
WBOYオリジナル
2023-08-08 08:13:581060ブラウズ

PHPが開発したオンライン投票システムのリアルタイム通知とリマインダー

PHP が開発したネット投票システムのリアルタイム通知とリマインダー

現代社会において、ネット投票システムは企業内投票などさまざまなシーンで広く利用されています。意思決定、生徒会選挙など投票システムのユーザーエクスペリエンスと効率を向上させるために、多くの場合、投票結果や重要な情報を投票参加者に迅速に通知するために、リアルタイムの通知機能やリマインダー機能をシステムに追加する必要があります。この記事では、PHPを使用してオンライン投票システムを開発し、リアルタイム通知やリマインダー機能を追加する方法を紹介します。

まず、基本的なオンライン投票システムを構築する必要があります。 Laravel などの PHP フレームワークを使用することも、PHP コードを自分で記述することもできます。この記事では、Laravel フレームワークを使用してデモを行います。

  1. 投票システム データベースの作成

まず、投票システム データベースを作成する必要があります。 phpMyAdmin またはその他のデータベース管理ツールを使用して、新しいデータベースを作成し、対応する投票テーブルとユーザー テーブルを作成できます。

  1. ユーザー登録とログイン

投票システムでは、ユーザーは投票に参加する前に登録とログインを行う必要があります。 Laravel フレームワークに付属する認証システムを使用して、ユーザー登録とログイン機能を迅速に構築できます。登録の際、連絡先情報としてユーザーの携帯電話番号またはメールアドレスを取得する必要があります。

  1. 投票の作成

投票システムでは、管理者は投票を作成し、投票オプションを設定する必要があります。投票情報を保存するために、vote という名前のデータ テーブルを作成できます。テーブルには次のようなフィールドを含めることができます:

  • id: 投票 ID
  • title: 投票のタイトル
  • description: 投票の説明
  • options: 投票options
  • status: 投票ステータス (進行中、終了など)

Laravel のデータ移行機能を使用して、データベースのテーブルとモデルを作成できます。

  1. 投票通知の開始

管理者が投票を作成した後、ログインしているすべてのユーザーに通知を送信して、新しい投票があることを知らせる必要があります。参加する。投票通知機能はLaravelのイベントとリスナーを利用して実装できます。

まず、VoteCreatedEvent などの新しいイベントを作成する必要があります。イベントには、投票情報だけでなく、通知の送信に必要なその他の関連情報も含めることができます。次に、ログインしているすべてのユーザーに通知が送信されるイベント リスナー VoteCreatedListener を作成できます。

以下はサンプル コードです:

// 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('感谢您的参与!');
    }
}

上記のコードでは、VoteCreatedEvent は投票作成イベントを表し、VoteCreatedListener は投票イベントのリスナー、NewVoteNotification は送信される通知情報です。 VoteCreatedListener の Laravel の Notice クラスを使用して、ログインしているすべてのユーザーに電子メール通知を送信します。通知の内容には、投票タイトルと参加リンクが含まれます。

  1. 投票ページにアクセスする

ユーザーは投票通知を受け取った後、通知内のリンクをクリックして投票ページにアクセスし、投票操作を実行できます。投票ページにリアルタイム更新機能を追加し、現在の投票結果をタイムリーに表示できます。

Laravel のブロードキャスト機能を使用して、リアルタイム更新機能を実現できます。まず、Laravel のブロードキャストドライバーとチャンネルを設定する必要があります。その後、Laravel の Echo ライブラリを使用して投票チャネルにサブスクライブし、ページ内で JavaScript コードを使用して投票結果をリアルタイムで更新できます。

以下はサンプルコードです:

// 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>

上記のコードでは、Laravel Mix を介して投票ページの JavaScript コードをコンパイルし、ページに導入します。ページが読み込まれると、Echo ライブラリを使用して投票チャネル (vote.{voteId}) にサブスクライブし、.vote.updated イベントをリッスンします。投票結果が更新されると、ページは更新されたデータを受信し、それに応じて表示します。

上記の手順により、オンライン投票システムのリアルタイム通知およびリマインダー機能を追加することができました。ユーザーはシステム内でリアルタイムで投票通知を受け取り、投票結果を即座に確認できます。このようなシステムは、ユーザー エクスペリエンスを向上させるだけでなく、投票の効率と公平性も向上します。

要約すると、PHP を使用して開発されたオンライン投票システムにリアルタイム通知およびリマインダー機能を追加することに成功し、対応するコード例を提供しました。この機能により、ユーザーは最新の投票情報を把握できるだけでなく、投票結果をリアルタイムに取得できるため、投票プロセスの利便性と公平性を実現します。

以上がPHPが開発したオンライン投票システムのリアルタイム通知とリマインダーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。