This module allows a site administrator to create a closed prediction game for a group. Participants each receive their own personal link and can use it to submit their predictions for the matches. Public self-registration is not currently available.
Points are calculated automatically and displayed in a leaderboard.
Example: 2026 FIFA World Cup: For my current prediction game, I imported the 2026 World Cup fixtures from OpenLigaDB, for example, via this source: https://www.openligadb.de/Matches/wm26/2026/4
The data source can be entered in the backend. The module then imports fixtures and later also results. Results after extra time or penalty shootouts are also taken into account and displayed accordingly as AOT or POT.
The module is not limited to the World Cup. Other competitions can also be used if they are accessible via a suitable OpenLigaDB address or if the fixtures are entered manually.
Backend Usage
In the backend, the site administrator can:
- set the title of the prediction game,
- configure the scoring system,
- specify an OpenLigaDB source,
- import or manually create matches,
- check or manually enter results,
- create participants,
- generate personal participant links,
- deactivate or delete participants,
- view the leaderboard.
Prediction submissions are controlled per match. By default, predictions can be submitted for each match up to 30 minutes before kickoff. This value can be changed in the backend.
Frontend Usage
Participants open their personal link and see:
- upcoming matches,
- their own prediction fields,
- the deadline for submitting predictions,
- the official result after the match,
- their own points earned,
- the leaderboard.
Past matches can be automatically hidden in the frontend to keep the page uncluttered. This setting is saved in the browser.
Scoring
The scoring system is flexibly configurable. In my World Cup example, I currently use:
1 point for correctly predicting the winner,
0 points for correctly predicting the exact score,
1 point for correctly predicting the number of goals scored by Team A,
1 point for correctly predicting the number of goals scored by Team B.
With these settings, a maximum of 3 points is possible per match. Other scoring systems are, of course, available.
Import and Duplicates
During import, the system attempts to recognize existing matches. If duplicates occur, unpredicted duplicates are hidden. Matches for which predictions have already been submitted are not automatically removed to prevent any loss of prediction data.
Security and Technology
This module is developed for WBCE 1.6.8 and designed for PHP 8.x. It uses MySQLi prepared statements throughout, FTAN protection in the backend, and its own secure frontend token mechanism for submitting predictions. Outputs are escaped, invalid token calls are throttled, and personalized frontend pages are delivered with no-cache headers.
Mit dem Modul kann ein Seitenadmin ein geschlossenes Tippspiel für eine Gruppe anlegen. Die Teilnehmenden erhalten jeweils einen eigenen persönlichen Link und können darüber ihre Tipps zu den Begegnungen abgeben. Eine öffentliche Selbstregistrierung gibt es derzeit noch nicht.
Die Punkte werden automatisch berechnet und in einer Bestenliste angezeigt.
Beispiel: Fußball-WM 2026: Für mein aktuelles Tippspiel habe ich die Begegnungen der WM 2026 aus OpenLigaDB übernommen, z. B. über diese Quelle: https://www.openligadb.de/Matches/wm26/2026/4
Die Datenquelle kann im Backend eingetragen werden. Das Modul importiert dann Begegnungen und später auch Ergebnisse. Auch Ergebnisse nach Verlängerung oder Elfmeterschießen werden berücksichtigt und entsprechend als n.V. bzw. n.E. angezeigt.
Grundsätzlich ist das Modul nicht auf die WM beschränkt. Andere Wettbewerbe können ebenfalls genutzt werden, wenn sie über eine passende OpenLigaDB-Adresse abrufbar sind oder man die Begegnungen manuell anlegt.
Nutzung im Backend
Im Backend kann der Seitenadmin:
- den Titel des Tippspiels festlegen,
- die Punktewertung einstellen,
- eine OpenLigaDB-Quelle hinterlegen,
- Begegnungen importieren oder manuell anlegen,
- Ergebnisse kontrollieren oder manuell eintragen,
- Teilnehmende anlegen,
- persönliche Teilnehmerlinks erzeugen,
- Teilnehmende deaktivieren oder löschen,
- die Bestenliste einsehen.
Die Tippabgabe wird pro Begegnung gesteuert. Standardmäßig kann jede Begegnung bis 30 Minuten vor Spielbeginn getippt werden. Dieser Wert lässt sich im Backend ändern.
Nutzung im Frontend
Die Teilnehmenden öffnen ihren persönlichen Link und sehen dort:
- die kommenden Begegnungen,
- ihre eigenen Tippfelder,
- den Zeitpunkt, bis wann die Tippabgabe möglich ist,
- nach Spielende das offizielle Ergebnis,
- die eigenen erreichten Punkte,
- die Bestenliste.
Vergangene Begegnungen können im Frontend automatisch ausgeblendet werden, damit die Seite übersichtlich bleibt. Die Option wird im Browser gespeichert.
Punktewertung
Die Punktewertung ist flexibel einstellbar. In meinem WM-Beispiel nutze ich aktuell:
1 Punkt für die richtige Tendenz,
0 Punkte für ein exakt richtiges Ergebnis,
1 Punkt für die richtige Torzahl von Team A,
1 Punkt für die richtige Torzahl von Team B.
So eingestellt sind pro Begegnung maximal 3 Punkte möglich. Andere Wertungen sind natürlich einstellbar.
Import und Dubletten
Beim Import wird versucht, bereits vorhandene Begegnungen sinnvoll zu erkennen. Falls Dubletten entstehen, werden ungetippte Dubletten ausgeblendet. Begegnungen, zu denen bereits Tipps abgegeben wurden, werden nicht automatisch entfernt, damit keine Tippwerte verloren gehen.
Sicherheit und Technik
Das Modul ist für WBCE 1.6.8 entwickelt und auf PHP 8.x ausgelegt. Es verwendet durchgehend mysqli Prepared Statements, FTAN-Schutz im Backend und einen eigenen abgesicherten Frontend-Token-Mechanismus für die Tippabgabe. Ausgaben werden escaped, ungültige Tokenaufrufe werden gedrosselt, und personalisierte Frontendseiten werden mit No-Cache-Headern ausgeliefert.