Lade Inhalt...

Erstellung einer PHP-Anwendung für Internet-Umfragen. Einführung in die Datenbank-Programmierung mit MySQL und PHP

von Eugen Grinschuk (Autor) Daniel Falkner (Autor)

Hausarbeit 2013 33 Seiten

Informatik - Wirtschaftsinformatik

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

Autoren

Zurück

Titel: Erstellung einer PHP-Anwendung für Internet-Umfragen. Einführung in die Datenbank-Programmierung mit MySQL und PHP