PHP + MySQL PHP • • • • • • Interpretiert, aber gepuffert (cache). Sehr nahe an perl, dennoch nicht gleich. Viele eingebaute bibliotheken. Einfache anbindung an datenbanken. Kann in HTML-seite eingebunden werden. Eingebaute „session management“ 1 MySQL • • • • • • PD-datenbank. Keine (richtigen) transaktionen. Treiber für fast alle umgebungen. Leicht zu verstehen. Folgt (fast) vollständig dem SQL standart. Referenzen müssen manuell nachgeführt werden Session Management • Mit den PHP funktionen: – – – – – eindeutige zuweisung sehr einfach schreibt in dateien -> gc erfordert cookies oder URL-rewrite globales timeout 2 Session Management • Explizit, unter verwendung der datenbank. – – – – – – courses: verwendet IP-nummer! courses: pro benutzer, nicht session! individuelles timeout persistent, auch nach neustart des rechners muss alles “von hand” machen kein aufräumen von temp. dateien nötig Locking • Schwierig, da HTTP stateless Beispeil: benutzer 1 und 2 laden dieselbe seite mit eingabefeldern, beide machen unterschieldiche änderungen. benutzer 1 speichert seine änderungen. benutzer 2 speichert seine änderungen, dabei gehen jen von benutzer 1 verloren. • MySQL bietet verschiedene möglichkeiten 3 Courses Courses Study People Lang. Sessions Credits Entries Groups Strings Courses - People CREATE TABLE people ( id INT NOT NULL AUTO_INCREMENT, entered DATETIME NOT NULL, expires DATE NOT NULL, login CHAR(128) NOT NULL, md5 CHAR(64) NOT NULL DEFAULT '*', given CHAR(64), surname CHAR(64) NOT NULL, address TEXT, idno CHAR(64) NOT NULL, mobile CHAR(64), studyID INT NOT NULL, sessionCount INT NOT NULL DEFAULT 1, note CHAR(64), roles SET("GUEST", "STUDENT", "ASSISTANT", "CHIEFASSISTANT", "PROFESSOR", "SECRETARY", "ADMINISTRATOR", "DEVELOPER") NOT NULL DEFAULT 'student', languageID INT NOT NULL DEFAULT 2, logDate TIMESTAMP DEFAULT 0, logHost CHAR(128) DEFAULT '', PRIMARY KEY(id), UNIQUE INDEX(login), UNIQUE INDEX(surname, given, id), INDEX(idno), INDEX(roles)); 4 Anmeldung • • • • • login-fenster präsentieren formular absenden: checkin bei fehler: zurück zur login bei erstanmeldung: profil erstellen sonst: menu mit übersicht 5