QuizSession ist eine Bibliothek, mit der sich Sicherheitsfragen wie die berühmten Rechenaufgaben in Webformulare einbetten lassen.
- Voraussetzungen zum Betrieb
- Funktionen der Bibliothek
- Möglichkeiten zur Konfiguration
- Download/Quellcode
- Datenbank-Schemen
- Lizenz
- Bugs, Kontakt
Voraussetzungen zum Betrieb
- PHP ab Version 4.3 (PHP 5 nicht getestet)
- MySQL-Datenbank (benötigt nur zwei Tabellen)
- Query-Klasse kompatibel zu Jlog (oder direkt von Jlog)
Funktionen der Bibliothek
- Session-Handling
- zufällige und kaum von äußeren Parametern abhängige Session-ID
- zufällige Auswahl der Fragen
- Stellen von Rechenaufgaben
- automatisches Aufräumen „angebrochener“ Sessions
Stellen eigener Fragen
Der Katalog, der sich in der Tabelle quiz
befindet und aus dem QuizSession zufällig eine Frage auswählt, kann um eigene Fragen erweitert werden. Das weiter unten aufgeführte Beispiel zeigt, wie die Tabelle dafür vewendet wird: Das Feld question
enthält die Frage und answer
die Antwort.
Möchte man nun Rechenaufgaben stellen, muss man in der Frage die beiden Platzhalter $d1 und $d2 verwenden. Beim Erzeugen einer neuen QuizSession werden die Platzhalter mit Zufallszahlen im Bereich von 0 bis 10 ersetzt. Die gewünschte Rechenoperation wird als Antwort gespeichert. Die aktuelle Version der Bibliothek unterstützt die Addition '+', Subtraktion '-' sowie Multiplikation '*'.
Möglichkeiten zur Konfiguration
Die Bibliothek wird über die zentrale Datei config.php konfiguriert, die momentan folgende Einstellungen (als PHP-Konstanten) unterstützt:
- QDTP
- Der Name steht für QuizTablePrefix und gibt einen Präfix an, der zum Tabellennamen gehört. Der Standartwert ist 'quiz_db_', d.h. die unten aufgeführte Tabelle quiz_db_quiz „heißt“ intern
QDTP.'quiz'
.
Die weiteren Konstanten können für eine lokale Installation genutzt werden; hier stammen die Zugangsdaten für die Datenbank von Jlog.
Weiterhin können globale Skripte am Ende der Datei inkludiert werden, da config.php von allen Klassen der Bibliothek verwendet wird.
Download/Quellcode
Die Bibliothek besteht aus folgenden Dateien:
- Download-Archiv
- enthält alle Dateien, die man zur Verwendung dieser Sessionbibliothek benötigt
- config.php
- Diese Datei enthält die Konfiguration der Bibliothek. Zusätzlich können dort Skripte eingebunden werden, die allen Bestandteilen der Bibliothek zur Verfügung stehen sollen. Auf dieser Webseite ist das die Query-Klasse von Jlog.
- QuizSession.php
- Diese Klasse wird zum Erzeugen einer „QuizSession“ verwendet und enthält daher Code für das Session-Handling. Außerdem wird hier eine zufällige Frage und falls nötig zwei zufällige Zahlen fürs Rechnen ausgewählt.
- StoredQuizSession.php
- Objekte dieser Klasse stellen eine gespeicherte QuizSession wieder her und prüfen, ob die Sicherheitsfrage korrekt beantwortet worden ist.
- string-lib.php
- Das Skript stellt einige nützliche Funktionen zum Arbeiten mit Zeichenketten bereit und kann auch losgelöst von QuizSession verwendet werden.
Datenbank-Schemen
Tabellenstruktur für Tabelle `quiz_db_quiz`
CREATE TABLE quiz_db_quiz (
id bigint(20) unsigned NOT NULL auto_increment,
question varchar(255) NOT NULL default '',
answer varchar(50) NOT NULL default '',
PRIMARY KEY (id)
);
Tabellenstruktur für Tabelle `quiz_db_quiz_master`
CREATE TABLE quiz_db_quiz_master (
session_id varchar(32) NOT NULL default '',
session_date date NOT NULL default '0000-00-00',
quiz_id bigint(20) unsigned NOT NULL default '0',
term1 varchar(25) NOT NULL default '',
term2 varchar(25) NOT NULL default '',
PRIMARY KEY (session_id),
FULLTEXT KEY session_id (session_id)
);
Beispielfragen
INSERT INTO quiz_db_quiz VALUES (1, 'Was ergibt $d1 + $d2', '+');
INSERT INTO quiz_db_quiz VALUES (2, 'Wie viel sind $d1 weniger $d2', '-');
INSERT INTO quiz_db_quiz VALUES (3, 'Was ist $d1 mal $d2', '*');
Lizenz
Copyright © 2007 Robert Bienert, alle Rechte vorbehalten
This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Bugs, Kontakt
Es kann nicht ausgeschlossen werden, dass die QuizSession-Bibliothek Fehler enthält. Momentan existiert kein Bugtracker, allerdings können Fehler oder Anregungen jederzeit per Email (Adresse im Impressum) oder über das Kontaktformular gemeldet werden.