WEBAPPLIKATIONEN MIT PHP Wo gibt es Hilfe? Wie fang ich an?
Tools Webapplikationen bestehen aus Textdateien Lassen sich in Texteditoren schreiben Alternativen: Eclipse (PDT) Netbeans (Dynamic Languages) Für das Projekt werden SVN Repositorys bereitgestellt
PHP PHP gibt keine Strukturen vor chaotische Anwendungen sind einfach Aber: PHP ist sehr flexibel Webserver bietet unterstützung
Architektur Pro Ansicht eine php-datei? Unübersichtliche, grosse Dateien Doppelter Code Adressierung: http://hostname/app/course.php?action=new
Architektur Zentrale Dateien, welche überall eingebunden werden? Kann bei neuen zentralen Dateien umständlich werden
Architektur Eine zentrale Datei, in welche die Ansichten eingebunden werden Adressierung: http://hostname/app/course/new (REST)
Architektur -.htaccess http://hostname/app/course/new.htaccess-datei im app Ordner <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule> Weiterleitung an public Kein direkter Zugriff auf http://hostname/app
Architektur -.htaccess http://hostname/app/course/new.htaccess-datei im app/public Ordner <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME}!-f RewriteCond %{REQUEST_FILENAME}!-d RewriteRule ^(.*)$ index.php?params=$1 [QSA,PT,L] </IfModule> Zugriff auf Dateien und Ordner Alles Weitere wird auf http://hostname/public/index.php umgeleitet
Ordnerstrukturen app application config library public css img js css, img und js (javascript) sorgen für Ordnung Mit.htaccess lassen sich application, config und library verstecken app config library css img js Ohne.htaccess liegen die Ordner aus public und Dateien aus application im app Ordner
Ordnerstrukturen Passwörter in Dateien im Ordner config Als Konstanten oder in einer Klasse Für die Wartbarkeit: Css und Javascript sollten immer in externen Dateien sein Links generieren Eine Funktion für Link generierung Pfade finden define('ds', DIRECTORY_SEPARATOR); define('root', dirname(dirname( FILE )));
Architektur was ist wo? Was sollte in zentrale Dateien ausgelagert werden? Einlesen der Parameter HTML-Gerüst (oder auch XML/JSON-Gerüst) Datenbankverbindung vielleicht sogar alle Anfragen Fehlerbehandlung (Generierung von Links und Menüs) Daten sollten vorbereitet werden und dann gerendert werden Eigene Lösungen möglich Verbreitete Lösung: MVC
Architektur einfache Lösung 1. Index.php bekommt Parameter 2. Allgemeine Vorbereitung 3. Übergebene URL (params) zerlegen z.b. http://hostname/app/controller 4. Controller mittels include einbinden Bei Klassen Methode aufrufen 5. Controller erstellt Inhalte in Variablen 6. Controller legt View fest oder gleichnamige View wird mittels include eingebunden
MVC View (Templates) Model (Datenbank) Response (HTML,XML,CSS, ) Controller Request (HTTP) Browser
MVC Wird für fast alle grossen Webapplikationen verwendet Es gibt viele Frameworks und CMSs Achtung Viele Frameworks bieten sehr viel mehr als ein einfaches MVC Modell und verstecken oftmals die Datenbank vollständig. In dieser Vorlesung geht es um das Erlernen und Üben von Datenbank- und Webtechnologien. Im Projekt wird es nicht erlaubt sein solche Frameworks/CMSs zu verwenden.
MVC Aber Viele Anleitungen für MVC vorhanden Können Anregungen geben http://anantgarg.com/2009/03/13/write-your-own-php-mvcframework-part-1/ http://johnsquibb.com/tutorials http://www.henriquebarroso.com/how-to-create-a-simple-mvcframework-in-php/
PHP prozedural oder objektorientiert Beides möglich in PHP Nur eins von beiden verwenden Klassen in PHP sind ähnlich wie in Java <?php class ExampleController extends Controller { private $privatevariable; protected $ protectedvariable; public $ publicvariable; function construct() { } function set($value) { } } function destruct() { }
PHP - Fehlerbehandlung PHP bietet mehrere Möglichkeiten set_error_handler set_exception_handler register_shutdown_function <?php class Handler { public function main() { register_shutdown_function(array($this, "clean_exit")); } } public function clean_exit() { header("location: error.php"); } <?php register_shutdown_function("clean_exit"); public function clean_exit() { header("location: error.php"); }
PHP - MySQL Grundlagen bekannt Mehr Sicherheit durch mysql_real_escape_string <?php $query = SELCT *.. mysql_real_escape_string($param). ;
PHP - Login Grundlagen bekannt Tabelle mit Benutzern (username, sha1(password)) Bei Login username == u.username && sha1(password) == u.password Tabelle mit laufenden Sessions Session erstellen (PHP Session oder per URL) Bei Logout Session zerstören
PHP - Login Auch hier viele Tutorials: http://www.knowledgesutra.com/forums/topic/7887-php-simplelogin-tutorial/ http://phpsense.com/2006/php-login-script/
Webapplikationen - Design 1. Struktur der Seite überlegen Welche Menüs? Wie sind diese aufgebaut? 2. Template mit HTML entwerfen 3. Feste Stellen für dynamische Inhalte planen Wo wird die aktuelle Ansicht angezeigt? Unabhängig von der Ansicht sollte ein statischer Rahmen existieren
Webapplikationen - Design Es gibt viele Seiten mit HTML-Designs http://www.freecsstemplates.org/ http://www.csszengarden.com/tr/deutsch/ http://www.cssheaven.com/
Weitere Quellen Mitstudenten fragen! Tutoren Fragen