Erstellung einer PHP-Anwendung für Internet-Umfragen. Einführung in die Datenbank-Programmierung mit MySQL und PHP
Hausarbeit 2013 33 Seiten
Leseprobe
Inhaltsverzeichnis
Abbildungsverzeichnis
Tabellenverzeichnis
Abkürzungsverzeichnis
1 Einleitung
1.1 Problemstellung und Ziel dieser Arbeit .
1.2 Aufbau der Arbeit
2 Grundlagen
2.1 Vorüberlegungen
2.2 Verwendete Hilfswerkzeuge
2.3 MySQL Datenbank
2.4 Programmiersprache PHP
2.5 Datenbank Schnittstelle
2.6 CSS Framework
2.7 Salt and Pepper Verfahren
3 Datenbank
3.1 UML Modell
3.2 Relationen Modell
3.3 Storage Engines und Transaktionen
3.4 Unterschied MyISAM und InnoDB . .
3.5 SQL DDL
4 Implementierung
4.1 Design Pattern
4.1.1 Konfiguration
4.1.2 Datenbankanbindung
4.1.3 MVC
4.2 Controller
4.3 View
4.4 Modell
4.4.1 SQL-Injection
4.4.2 Methoden
5 Zusammenfassung
5.1 Kritische Würdigung
5.2 Ausblick
Abbildungsverzeichnis
1 Unified Modeling Language (UML) Modell
2 SQL DDL Codebeispiel der Tabelle Survey
3 SQL DDL Codebeispiel der Tabelle SurveyItems
4 SQL DDL Codebeispiel der Tabelle SurveyAnswers
5 SQL DDL Codebeispiel der Tabelle User
6 SQL DDL Codebeispiel für Eintrag in die User Tabelle
7 Konfigurationsdatei config.ini
8 Model View Controller (MVC) Ablauf
9 Controller Default GET Methode
10 User Controller Benutzerhinzufügen POST Methode
11 Template Engine
12 Screenshot der Umfragenübersicht
13 SQL Injection - Fehlerhafter PHP Code
14 getSurveyName Funktion
15 getSurveyResult Methode
16 saveNewAnswers Methode
17 addSurvey Methode
Tabellenverzeichnis
1 Survey
2 SurveyItems
3 SurveyAnswer
4 SurveyAnswer
Abkürzungsverzeichnis
Abbildung in dieser Leseprobe nicht enthalten
1 Einleitung
Das Assignment für das Studienmodul DBA02 - Einführung in die Datenbank Pro- grammierung mit MySQL und PHP - wurde von Daniel Falkner und Eugen Grinschuk gemeinsam erstellt. Deshalb wird eine einheitliche Gruppenbenotung gewünscht.
1.1 Problemstellung und Ziel dieser Arbeit
Die Problemstellung dieser Arbeit ist, dass ein webbasiertes Umfragesystem mit un- terschiedlichen Umfragen und Antwortmöglichkeiten entwickelt werden soll. Dem Be- nutzer soll die Möglichkeit gegeben werden, eine oder mehrere Antwortmöglichkeiten auswählen sowie die Umfrageergebnisse einsehen zu können. Das Ziel dieser Arbeit ist eine Implementierung der Anwendung auf Basis von Hypertext Preprocessor (PHP) in Verbindung mit einer MySQL Datenbank. Der Zugriff auf die Anwendung soll über einen Webbrowser stattfinden. Darüber hinaus soll es dem Administrator ermöglicht werden sich mittels Benutzername und Passwort zu authentifizieren. In diesem ge- schützten Bereich können neue Umfragen mit unterschiedlichen Antwortmöglichkei- ten hinzugefügt werden.
1.2 Aufbau der Arbeit
Im Grundlagenteil wird auf wichtige Vorüberlegungen eingegangen, die vor der Erstel- lung des Datenbankmodells und der Anwendung gemacht werden müssen. Außerdem wird ein Überblick über die Skriptsprache PHP und dem Datenbanksystem MySQL geschaffen sowie auf verwendete Frameworks. Im Hauptteil werden Aufbau und Im- plementierung der Datenbank sowie der Anwendung behandelt. Der Schluss beinhaltet eine Zusammenfassung, eine kritische Würdigung und einen Ausblick auf weitere Op- timierungen.
2 Grundlagen
2.1 Vorüberlegungen
Bei den Vorüberlegungen wurde die Entscheidung getroffen nur freie und somit ko- stenlose Software und Hilfswerkzeuge zu verwenden. Zur einfachen Verwaltung des Quellcodes wurde eine Versionsverwaltungssoftware eingesetzt. Git1 ist dafür hervor- ragend geeignet und wird erfolgreich in anderen großen Projekten eingesetzt.
2.2 Verwendete Hilfswerkzeuge
Für die Erstellung der Datenbank wurden unterschiedliche Hilfswerkzeuge verwendet. Die Konzeption und somit die Modellierung der Datenbank wurde mit dem Hilfswerk- zeug Dia2 erstellt. Damit war eine einfache und übersichtliche Modellierung in UML3 möglich. Um anschließend die Datenbank mit der datenbankorientierten Beschreibungssprache SQL4 erstellen zu können, wurde phpMyAdmin5 verwendet.
2.3 MySQL Datenbank
MySQL ist die beliebteste und am weitesten verbreitete Open-Source-Datenbank der Welt.6 MySQL kennt die standardisierten Structured Query Language (SQL) Befehle, die von anderen Datenbanken, wie z. B. ORACLE7 ebenfalls korrekt interpretiert werden. Da MySQL Open-Source ist, bildet sie die Basis für viele dynamische Webseiten, meist in Verbindung mit einem Content Management System (CMS)8. Darin werden die Inhalte der Webseite, die Verlinkungen der Inhalte und Elemente der Webseite sowie Informationen und gewisse Einstellungen des CMS gespeichert. Datenbankabfragen der Webseite erfolgen mittels PHP. Damit lassen sich sehr dynamische und komplexe Internetanwendungen erstellen und verwalten.Selbstständige, auf Dauer und flexiblen und sicheren Gebrauch ausgelegte Daten- organisation, die sowohl eine Datenbasis als auch eine zugehörige Datenverwaltung - Datenbankmanagementsystem (DBMS) - umfasst. Eine Datenbank dient dazu, eine große Menge von Daten strukturiert zu speichern und zu verwalten.9
2.4 Programmiersprache PHP
PHP10 ist eine Scriptsprache und vor allem im Webbereich sehr verbreitet. Mit Versi- on 5 bietet PHP eine bessere Unterstützung zur objektorientierten Programmierung11. Durch die Objektorientierte Programmierung (OOP) kann ein Projekt sehr übersicht- lich gegliedert und programmiert werden. Dies erleichtert gerade bei mittleren bis grö- ßeren Projekten die Zusammenarbeit und die Wartung der Anwendung. Objekte wer- den von Klassen erzeugt in welcher der Quellcode und somit der eigentliche Ablauf definiert wird. Klassen können durch die Vererbung auch wieder verwendet werden. Ein weiterer Vorteil ist, dass auf bereits vorhandene Entwurfsmuster, die sogenannten Design Patterns12, zurückgegriffen werden kann. Durch Namespaces können Klas- sen und Funktionen in Bereiche eingeteilt werden. Mit Kombination der PHP Klassen Autoloader Funktion werden die jeweiligen Klassen Quellcodedateien automatisch bei Bedarf eingebunden.
2.5 Datenbank Schnittstelle
PHP bietet dem Entwickler mehrere Möglichkeiten eine MySQL Datenbank anzubin- den13. Der mittlerweile veraltete native Treiber MySQL14 sollte nicht mehr verwen- det werden. Er wird nicht mehr weiterentwickelt und bietet auch keine Unterstützung zur OOP. Es wird die Verwendung der MySQLI15 oder PHP Data Objects (PDO) Erweiterung als Datenbank Application Programming Interface (API) empfohlen. In dieser Anwendung wurde die PDO Erweiterung von PHP zum Zugriff auf MySQL Datenbanken verwendet. PDO unterstützt Prepared Statements und kann gegenüber der MySQLI Schnittstelle mit mehreren Datenbanktypen umgehen. Dies bringt gerade beim Umstieg auf eine andere Datenbank einen erheblichen Vorteil zur Möglichkeit der weiteren Verwendung des Datenmodells.
2.6 CSS Framework
Die Darstellung und Formatierung der Hyper Text Markup Language (HTML) Sei- ten wird über Cascading Style Sheet (CSS) definiert. Durch CSS wird der Inhalt der HTML-Seite von Design getrennt. Dies bewirkt einen übersichtlicheren und kleineren HTML Code. Für das Umfragesystem wurde ein freies CSS Framework mit dem Na- men Twitter Bootstrap16 gewählt. Dieses CSS Framework bewirkt neben Responsive Webdesign17 auch ein einheitliches Design auf unterschiedlichen Webbrowsern.
2.7 Salt and Pepper Verfahren
Das Salt and Pepper Verfahren18 ist ein kryptografisches Hashverfahren19, welches beim Speichern von Passwörtern verwendet wird. Dabei wird mit Salt eine zufällig ge- wählte Zeichenfolge um die Informationen der Eingabe an das in Klartext hinterlegte Passwort erweitert. Der so entstandene Hashwert wird in der Datenbank abgespei- chert. Dieser Hashwert wird für die Überprüfung des Passwortes verwendet. Dabei wird der Salt nicht jedes Mal neu erzeugt, da das Passwort ansonsten abgelehnt wer- den würde, weil der Hashwert nicht mit dem gespeicherten Hashwert übereinstimmt. Mit Pepper werden weitere geheime Zeichenfolgen dem Passwort hinzugefügt. Diese, für alle Passwörter gleichen Zeichenfolgen werden noch vor der Berechnung des Has- hwertes dem Passwort hinzugefügt. Dabei wird der Pepper an einem anderen Ort als das Passwort selbst gespeichert. Dies dient zur erweiterten Sicherheit. Denn sollte es einem Angreifer z. B. durch SQL-Injection gelingen, sich Zugriff zur Datenbank zu verschaffen, dann sieht er zwar den Salt, nicht aber den Pepper. Demzufolge ist eine Entschlüsselung des Passwortes nicht möglich, da beide Teile benötigt werden. Zur Steigerung der Sicherheit sollte ein möglichst starker Pepper definiert werden. Ziel des Salt and Pepper Verfahrens ist es, die in der Datenbank gespeicherten Passwörter si- cherer und Wörterbuchangriffe durch Brute-Force-Verfahren, zu erschweren oder gar wertlos zu machen.
3 Datenbank
Datenbanken sind in der heutigen Zeit kaum noch wegzudenken. Sie werden in verschiedensten Bereichen eingesetzt, in denen Daten gespeichert werden müssen, wie zum Beispiel Webseiten, Webshops, Personaldatenbank, etc. Somit ist es kein Problem, komplette Web-Shops in Datenbanken zu speichern. Auch Benutzerinformationen wie Benutzername, Passwort und letzter Login können hier abgelegt werden.
3.1 UML Modell
Bei der Modellierung der relationalen Datenbank wurde auf eine flache Hierarchie geachtet, um unnötige Tabellen, Rechenzeit und Speicherplatz durch redundante Datenhaltung zu vermeiden. Der minimale Aufbau für ein Umfragesystem mit Benutzern ist in Abbildung 1 ersichtlich. Die Benutzer werden mit ihren Attributen wie ID, Name, Passwort und LastLogIn in einer separaten Tabelle abgespeichert, wobei das Attribut ID den Primärschlüssel20 der Tabelle User kennzeichnet. Abhängigkeiten der Tabelle User zu anderen Tabellen in der Datenbank sind nicht vorhanden.
Abbildung 1: UML Modell
Abbildung in dieser Leseprobe nicht enthalten
Die Umfragen bestehen aus unterschiedlichen Fragen und verschiedenen Antwort- möglichkeiten. In der Tabelle Survey wird die Umfrage mit ihren Attributen ID und Name abgespeichert, wobei ID den Primärschlüssel der Tabelle Survey bildet. In der Tabelle SurveyItems sind die Attribute ID sowie Name enthalten. Das Attribut ID kennzeichnet hierbei den Primärschlüssel der Tabelle SurveyItems. Alle vorhandenen Antwortmöglichkeiten werden in der Tabelle SurveyItems gespeichert. Die Assozia- tion zwischen der Tabelle Survey und SurveyItems ist 1 : *. Das bedeutet, dass eine Umfrage eine oder mehrere Antwortmöglichkeiten enthalten kann, eine Antwortmög- lichkeit allerdings nur einer Umfrage zugeteilt wird. Würde eine Antwort mehreren Umfragen zugeteilt werden, also einer Assoziation * : * entsprechen, dann würde dies die Umfragewerte verfälschen. Denn, eine Auswahl derselben Antwortmöglichkeit in erster und zweiter Umfrage von zwei unterschiedlichen Benutzern liefert ein Ergeb- nis von 2, anstatt 1 in jeder Umfrage. Damit sind beide Umfragen nicht repräsentativ und können verworfen werden, da die genaue Anzahl der gewählten Antwortmöglich- keit nicht der jeweiligen Umfrage zugewiesen werden kann. Die jeweilig ausgewählten Antworten in den Umfragen werden in der Tabelle SurveyAnswer gespeichert. Enthal- ten sind die Attribute ID als Primärschlüssel der Tabelle sowie TimeStamp für den Zeitpunkt der abgegebenen Antworten. Die Assoziation zwischen SurveyItems und SurveyAnswer ist 1 : *. Das bedeutet, dass eine oder mehrere Antwortmöglichkeiten aus den Antworten der jeweilig zugewiesenen Umfrage ausgewählt werden können. Eine Antwortmöglichkeit kann allerdings nur in einer Umfrage ausgewählt werden. Wird keine Antwortmöglichkeit gewählt, wird der Benutzer zur Ergebnisseite weiter- geleitet und sieht die bisherigen Ergebnisse der ausgewählten Umfrage.
3.2 Relationen Modell
Um redundante Informationen in der Datenbank zu vermeiden, wurde auf die 3. Normalform21 geachtet.
Eine Relation befindet sich in 3NF, wenn sie in 2NF ist und wenn alle Attribute, die nicht zum Primärschlüssel gehören, direkt von diesem abhängig sind.22
[...]
1 http://git-scm.com
2 http://live.gnome.org/Dia
3 [UML, 2013]
4 [Kofler, 2005]
5 http://www.phpmyadmin.net/
6 [MySQL, 2013a]
7 [Oracle, 2013a]
8 [Oracle, 2013b]
9 [Gabler, 2013]
10 http://www.php.net
11 [Lahres and Rayman, 2009]
12 [Schmidt, 2009]
13 [Theis, 2013]
14 [MySQL, 2013c]
15 MySQL Improved Extension
16 http://getbootstrap.com/
17 Die Webseite reagiert auf unterschiedliche Auflösungen und Eigenschaften des benutzten Endgerä- tes
18 [Heise, 2013]
19 [Schmeh, 2009]
20 [Computerlexikon, 2013]
21 [Peter Kropff, 2013]
22 [Prof. Dr. Franz-Karl Schmatzer, 2013] Seite 210f
Details
- Seiten
- 33
- Jahr
- 2013
- ISBN (eBook)
- 9783668113862
- ISBN (Buch)
- 9783668113879
- Dateigröße
- 642 KB
- Sprache
- Deutsch
- Katalognummer
- v312402
- Institution / Hochschule
- AKAD University, ehem. AKAD Fachhochschule Stuttgart
- Note
- 1,3
- Schlagworte
- erstellung php-anwendung internet-umfragen einführung datenbank-programmierung mysql